最近工作涉及計算條碼第 13位校正位批量更改, AI、條碼印表機、條碼掃描器等軟體內建產生校正位,網上搜尋也找了條碼產生器,但對我們來說不夠靈活,編寫了一個小程式 計算校正位
OK 先看看PHP版的,跟網上搜尋到的簡單了不少
function en13($code){$tmp1=0;$tmp2=0;for($i=0;$i<12;$i++){if($i % 2==0)$tmp1+=substr($code,$i,1);else$tmp2+=substr($code,$i,1);}return (10-($tmp2*3+$tmp1)%10)%10;}//測試$t="6939762911740";echo en13($t);
還有要把MSSQL資料庫中的資料批次更新 就不寫程式了 直接在sql企業管理器裡更新
T-SQl代碼
declare @str as varchar(15)declare @tmp as varchar(30)declare @t1 as intdeclare @t2 as intdeclare @i int set @t1=0set @t2=0set @str='6939762911740'set @i=1 while @i<=12 begin if @i % 2=0 beginset @t1=@t1+substring(@str,@i,1)endelsebeginset @t2=@t2+substring(@str,@i,1)endset @i=@i+1 endset @tmp=(10-(@t1*3+@t2)%10)%10--end functionSELECT @t1 ,@t2,@tmp
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