最近の作業では、バーコードの 13 番目のチェック デジットのバッチ変更を計算する必要がありました。AI、バーコード プリンター、バーコード スキャナー、その他のソフトウェアにはチェック デジット生成機能が組み込まれていますが、オンラインで検索してバーコード ジェネレーターを見つけましたが、十分な柔軟性がありませんでした。そこで、チェックデジットを計算するためのミニプログラムを 1 つ書きました
OK、まずは PHP バージョンを見てみましょう。オンラインで見つかるものよりもはるかに簡単です。
関数 en13($code)
{
$tmp1=0;
$tmp2=0;
for($i=0;$i
{
If($i % 2==0)
$tmp1+=substr($code,$i,1);
それ以外
$tmp2+=substr($code,$i,1);
(10-($tmp2*3+$tmp1)%10)%10 を返します。
}
// www.2cto.com をテストします
$t="6939762911740";
エコー en13($t);
関数 en13($code)
{
$tmp1=0;
$tmp2=0;
for($i=0;$i
{
if($i % 2==0)
$tmp1+=substr($code,$i,1);
それ以外
$tmp2+=substr($code,$i,1);
}
return (10-($tmp2*3+$tmp1)%10)%10;
}
//テスト
$t="6939762911740";
エコー en13($t);
プログラムを作成せずに、MSSQL データベース内のデータをバッチで更新する必要もあります
。
T-SQL コード
@str を varchar(15) として宣言します
@t1 を int として宣言します
@t2 を int として宣言します
@i int を宣言します
@t1=0 を設定します
@str='6939762911740' を設定します
@i=1 を設定します
@i<=12
しながら
始まります
@i % 2=0 の場合
始まります
set @t1=@t1+substring(@str,@i,1)
終わり
それ以外は
始まります
set @t2=@t2+substring(@str,@i,1)
終わり
@i=@i+1 を設定します
終わり
set @tmp=(10-(@t1*3+@t2)%10)%10
-- 関数の終了
@t1、@t2、@tmp を選択してください
@str を varchar(15) として宣言します
@tmp を varchar(30) として宣言します
@t1 を int として宣言します
@t2 を int として宣言します
@i int を宣言します
@t1=0 を設定します
@t2=0 を設定します
@str='6939762911740' を設定します
@i=1 を設定します
@i<=12
しながら
始まります
if @i % 2=0
始まります
set @t1=@t1+substring(@str,@i,1)
終わり
それ以外
始まります
set @t2=@t2+substring(@str,@i,1)
終了
@i=@i+1 を設定します
終わり
set @tmp=(10-(@t1*3+@t2)%10)%10
-- 関数終了
SELECT @t1、@t2、@tmp www.2cto.com
ENA-13 チェックコードの計算方法 コード位置通し番号 コード位置通し番号とは、チェックコードを含む右から左への通し番号です(チェックコードのコード位置通し番号は 1)。 計算手順 チェック コードの計算手順は次のとおりです: a. コード位置番号 2 から開始して、すべての偶数桁のデジタル コードを合計します。 b. ステップ a の合計に 3 を掛けます。 c. コード位置番号 3 から始めて、すべての奇数桁のデジタル コードを合計します。 d. ステップ b と c の結果を加算します。 e. ステップ d で取得した結果以上で 10 の最小整数倍の数値から、ステップ d で取得した結果を減算します。その差が、必要なチェック コードの値になります。例: コード 690123456789X1 のチェック コードの計算を表 1 に示します。 表 1 チェック コードを計算する手順の例 1. 右から左への番号付け 位置番号 13 12 11 10 9 8 7 6 5 4 3 2 1 コード 6 9 0 1 2 3 4 5 6 7 8 9 X 2。通し番号2から偶数桁の和を求めます ① 9+7+5+3+1+9=34 ① 3. ①*3=② 34×3=102 ② 4. 通し番号3から始めて求めます奇数桁 上記の数値の合計 ③ 8+6+4+2+0+6=26 ③ 5. ②+③=④ 102+26=128 ④ 6. 以上の数値を引きます。結果④と④の10の最小の整数倍、その差は必要なチェックコードの値 130-128=2 チェックコードX1=2
Tao2581さんの日々のメモより抜粋