delphi 18位身份证号码的校验
生活随笔
收集整理的這篇文章主要介紹了
delphi 18位身份证号码的校验
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
18位公民身份號碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗碼組成。
組成:六位地址,八位生日,三位順序碼,?一位校驗碼。校驗方法:
(1)十七位數(shù)字本體碼加權(quán)求和公式
S?=?Sum(Ai?*?Wi),?i?=?0,?…?,?16?,先對前17位數(shù)字的權(quán)求和
Ai:表示第i位置上的身份證號碼數(shù)字值
Wi:表示第i位置上的加權(quán)因子
Wi:?7?9?10?5?8?4?2?1?6?3?7?9?10?5?8?4?2(2)計算模
Y?=?mod(S,?11)(3)通過模得到對應(yīng)的校驗碼
Y:?0?1?2?3?4?5?6?7?8?9?10
校驗碼:?1?0?X?9?8?7?6?5?4?3?2代碼如下:
Function?Verify(Num?:?String):Boolean;
const
WI?:array[0..16]?of?Integer?=?(7,?9,?10,?5,?8,?4,?2,?1,?6,?3,?7,?9,?10,?5,?8,?4,?2);
VC?:array[0..10]?of?Char?=?(’1′,?’0′,?‘X’,?’9′,?’8′,?’7′,?’6′,?’5′,?’4′,?’3′,?’2′);
var
P?:?PChar;
I,?S?:?Integer;
begin
P?:=?PChar(Num);
S?:=?0;
for?I?:=?0?to?16?do
S?:=?S?+?(Ord(P[I])?–?$30)*WI[I];
S?:=?S?mod?11;
Result?:=?P[17]?=?VC[S];
end;
總結(jié)
以上是生活随笔為你收集整理的delphi 18位身份证号码的校验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubantu桌面,compiz特效和配置
- 下一篇: 列表,元组,字典,集合类型变量相关内置函