本帖最后由 天空c 于 2022-1-11 18:37 编辑
众所周知:sfz号由18个数字组成
1-6:地址码
7-14:数字出生日期码
15-17:三位数字顺序码
18:校验码
一些程序通常采用判断数字校验码的正误,来判断身份证是否正确
校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的。
demo:
***校验位计算.e
(6.73 KB, 下载次数: 67)
![]()
![]()
变量名 | 类 型 | 静态 | 数组 | 备 注 | card | 字节集 | | | map | 文本型 | | 0 | sum | 整数型 | | | i | 整数型 | | | 判断 (取文本长度 (身份证前17位 ) < 17 ) 返回 (“”) card = 取字节集左边 (到字节集 (身份证前17位 ), 17 ) map = { “1”, “0”, “X”, “9”, “8”, “7”, “6”, “5”, “4”, “ 3”, “2” } 计次循环首 (17, i ) sum = sum + 求次方 (2, i ) × 到整数 (字符 (card [18 - i ])) 计次循环尾 ()返回 (map [sum % 11 + 1 ]) 如果真 (取文本长度 (身份证 ) ≠ 18 ) 返回 (假)返回_校验码 = 计算校验码 (身份证) 判断 (返回_校验码 = 取文本中间 (身份证, 18, 1 )) 返回 (真) 返回 (假)返回 (假)
|