2011-07-04 37 views
1

我想實現一個簡單的校驗數字使用數字模10的加權總和。此外,作爲一個校驗數字,我想「濫用」校驗數字來檢測哪一個一個數字所屬的兩個池(例如物品編號和客戶編號)。檢查數字權重,永遠不會碰撞

根據Wikipedia它建議使用1,3,7及9重量,因此,例如我可以選擇:

Article Numbers: Weights 1, 3, 7, 1, 3, 7, ... 
Customer Numbers: Weights 7, 9, 1, 7, 9, 1, ... 

Number 1234 as an Article Number (1*1+2*3+3*7+4*1 mod 10 = 2): 12342 
Number 1234 as a Customer Number (1*7+2*9+3*1+4*7 mod 10 = 6): 12346 

的問題是,有時這給同一校驗位兩者重設置:

Number 1098 as an Article Number (1*1+0*3+9*7+8*1 mod 10 = 2): 10982 
Number 1098 as a Customer Number (1*7+0*9+9*1+8*7 mod 10 = 2): 10982 

我可以選擇的數量池的權重的方式,對於任何給定原來的號碼,確保了校驗位是從不爲兩個池一樣嗎?

回答

0

我懷疑這是可能的,但我必須進行徹底檢查以確保。

你有沒有想過使用偶數編號和奇數的客戶編號,或類似的東西?

+0

數字範圍都是連續的。不過,如果不是,我可以強制每個商品編號的校驗位都是偶數,並且每個顧客校驗位都是通過增加1來增加它們。 – AndreKR