中国居民身份证号码编码规则详解
|
admin
2025年2月26日 20:43
本文热度 363
|
今天在EXCELHOME论坛上看到一个帖子,要求提取身份证号码之类的信息。
我就想,身份证号码的编码有什么规则呢?不是完全了解,于是就打开腾讯元宝,把模型切换成DeepSeek,问了一下,这会搞清楚了,记下来:
中国居民身份证号码遵循国家标准GB 11643-1999,采用18位编码结构,包含以下四个部分:
1. 地址码(前6位)
结构:省(2位) + 市(2位) + 区/县(2位)
规则:前两位代表省级行政区(如11=北京,44=广东),中间两位代表市级,最后两位代表区/县级。
2. 出生日期码(第7-14位)
格式:YYYYMMDD
规则:按公历出生日期填写,年份用4位,月、日各2位。
3. 顺序码(第15-17位)
结构:派出所代码(前2位) + 性别码(第17位)
规则:前两位是户籍所在地派出所的分配代码,按当天该派出所所辖地出生儿顺序分配。
第17位表示性别:奇数(1,3,5,7,9)为男性,偶数(0,2,4,6,8)为女性。
4. 校验码(第18位)
作用:通过算法验证前17位的正确性,防止输入错误或伪造号码。
规则:前17位分别乘以权重系数:[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]。
将乘积之和除以11,得到余数。
余数对应校验码:0→1, 1→0, 2→X, 3→9, 4→8, 5→7, 6→6, 7→5, 8→4, 9→3, 10→2。
完整示例
身份证号:11010519900101017X
地址码:110105(北京市朝阳区)
出生日期:19900101(1990年1月1日)
顺序码:017(男性)
校验码:X
我们可以用这些规则来检查身份证号码的有效性,可以考虑写一个VBA函数来实现这个功能(当然,用手工计算检查也可以,就是太麻烦。)
阅读原文:原文链接
该文章在 2025/2/27 10:40:34 编辑过