济南市葬花

最后一位校验码用X表示,是因为算出来是10,那X在核验时到底按几来算?

2026-07-07 10:44:02 浏览次数:1
详细信息

“X” 在计算和校验时是按 10 来算的,但它写在证件号码里时用罗马数字 X 表示,以避免号码长度超过规定的位数。

详细解释

很多编码系统(比如中国大陆的 18 位公民身份号码ISBN-10 等)的校验码是通过特定公式计算出的 一位数字,范围可能是 0 到 10
当结果为 10 时,如果直接写 “10” 就会让号码总位数多出一位(例如身份证变成 19 位),因此用 X(罗马数字 10)来代替。

身份证号码例子(ISO 7064 MOD 11-2 校验)

中国大陆身份证第 18 位(校验码)计算方法如下:

将前 17 位数字分别乘以不同的权重(第 i 位权重 = ( 2^{18-i} \mod 11 ))。 计算加权和 ( S )。 计算校验码 ( a{18} = (12 - (S \mod 11)) \mod 11 )(另一种等价表述是 ( a{18} = (1 \times 2^{17} + \dots) \mod 11 ),再映射到 0~10)。

校验时

校验码公式示例(简版)

对身份证,前 17 位加权系数(从左到右)分别是:
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
计算加权和 sum,再计算:
(12 - (sum mod 11)) mod 11
如果结果是 10,则末位为 X。

校验时,末位是数字就直接用数字值,是 X 则用数值 10,再按相同规则检查结果是否匹配。

总结

相关推荐