身份证15位升18位的算法.txt

来自「大量Delphi开发资料」· 文本 代码 · 共 27 行

TXT
27
字号
function SFZ15to18(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[i]) * W[i]; 
S:= S + j; 
end; 
except 
result:= ''; 
exit; 
end; 
S:= S mod 11; 
Result:= NewID + A[S]; 
end; 
end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?