“X” 在计算和校验时是按 10 来算的,但它写在证件号码里时用罗马数字 X 表示,以避免号码长度超过规定的位数。
很多编码系统(比如中国大陆的 18 位公民身份号码、ISBN-10 等)的校验码是通过特定公式计算出的 一位数字,范围可能是 0 到 10。 当结果为 10 时,如果直接写 “10” 就会让号码总位数多出一位(例如身份证变成 19 位),因此用 X(罗马数字 10)来代替。
中国大陆身份证第 18 位(校验码)计算方法如下:
校验时:
对身份证,前 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。
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(12 - (sum mod 11)) mod 11
校验时,末位是数字就直接用数字值,是 X 则用数值 10,再按相同规则检查结果是否匹配。