Appendable介面和(7064:1983.MOD 11-2)演算法

來源:互聯網
上載者:User

標籤:style   code   java   http   資料   string   

1 Appendable介面

如果某個類的執行個體打算接收取自 Formatter 的格式化輸出,那麼該類必須實現 Appendable 介面。

java.lang的StringBuffer、StringBuilder實現了該介面。

格式化主要用在文本輸出方面,比如,數字、日期、金額等。

 

2 7064:1983.MOD 11-2演算法

以下可以說明為什麼身份證校正碼裡非得有X。

該演算法的主要應用有身份證校正碼。校正碼通常是一組數位最後一位,由前面的數字通過某種運算得出,用以檢驗該組數位正確性。身份證校正碼的作用即是對身份證的前17位元字進行運算得到第18位,以初步檢驗該組數字正確性。

該演算法函數的構造方式為mod((2^(i-1) * ai), 11),這個i是身份證17位元據從左至右的編號,從1~17。sigma(xi)表示x1+x2+……+x17。

這裡和這個演算法的具體結果可能不一樣,i的編排方式,計算結果後模取反(如5%11=5,取反後(12-5)%11 = 7)等,忽略這些差別。

這樣做的放,校正碼對17位的其中一位出錯是可以校正出來的,對兩位非同樣位置的錯誤也是可以校正出來的,對三位以上的某些,是可以校正出來的。由於一位出錯的機率要遠遠高於二位再遠遠遠高於三位,所以該演算法的校正能力應該是非常強的(除非故意設計)。

所以該演算法最後一位增加了X,使校正的能力增加到11和身份證的位元17沒有關係,而是和每一位的進位有關係。即如果每一位元字範圍是0~6,校正碼就是0~7了。

當然,這裡還有一點問題,如果跟進位有關,0~9也只需要10種標識來區別,校正碼錶示的可能值至少為10,而不是11。這是由於校正碼的可能性為10時,和模數可能會有問題,a1為奇數,結果就為奇數。這是和其基底2相關的,也就是說校正碼的可能值個數與基底應該是正交的。這應該就是演算法名中11-2的含義。

據此,我們可以構造一個10-3演算法,這樣,身份證上就不必要有X了。但與11-2相比,10-3有一個劣勢:目前記憶體資料按2進位存放,11-2演算法對有兩位(相鄰位?)出錯的情況,檢出率更高一些(目測)。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.