谈谈身份证号的校验(10分)

  • 主题发起人 主题发起人 amidiot
  • 开始时间 开始时间
A

amidiot

Unregistered / Unconfirmed
GUEST, unregistred user!
据说18为的身份正号实用了[ISO7064:1983,MOD11-2]校验
谁有这方面的资料
谁又有身份证号对应的地理位置的资料?
 
摘自:http://www.powerba.com/develop/delphi/article/20000927030.htm

function f(ID: string):string;
const
W:array [1..18] of integer = (7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
A:array [0..10] of char = ('1','0','x','9','8','7','6','5','4','3','2');
var
i, j, S: integer;
NewID: string;
begin
if Length(ID) <> 15 then
result:= ''
else begin
NewID:= ID;
Insert('19', NewID, 7);
S:= 0;
try
for i:=1 to 17 do begin
j:= StrToInt(NewID) * W;
S:= S + j;
end;
except
result:= '';
exit;
end;
S:= S mod 11;
Result:= NewID + A;
end;
end;
 
校验码这么来的,我明白了,这些问题都知道,厉害!
 
接受答案了.
 
后退
顶部