能力值:
( LV12,RANK:240 )
|
-
-
2 楼
def checksum ( s ) : return str( ( int( '-' + s + '0', 13 ) + 1 ) % 11 ).replace( '10', 'X' )
假设18位身份证号是"430101196001011318",这是我杜撰的一个身份证号,勿对号入 座。那么,上述算法实际是将字符串"-430101196001011310"(尾数用0替换)视为13进 制整数,加1,再模11得到校验码。为了用单个字符,余数是10时用X代替。整个算法 简单直白。
>>> checksum('43010119600101131') '8'
换句话说,校验18位身份证号时,进行如下运算,结果应该恒为1。
>>> int( '430101196001011318', 13 ) % 11 1
当然,由于尾号有可能是X,无法如此简写,但数学原理如此。
|
能力值:
( LV13,RANK:240 )
|
-
-
3 楼
scz
def checksum ( s ) :
return str( ( int( '-' + s + '0', 13 ) + 1 ) % 11 ).replace( '10', 'X' )
...
活捉大佬。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
学习
|
|
|