身份证号包含罗马数字「X」而不是纯阿拉伯数字，是不是一个失败设计？所有的数字化填写都不能直接调用纯数字键盘，如果重新设计有没有更好的方案呢？
这个事情说简单也简单，说复杂也复杂，首先，就设计方案来说， **这是一个非常优秀的设计，甚至几乎没有比这个更优秀的方案了** 。

关于题主所说的“所有数字化填写都不能直接调用纯数字键盘”的前提是题主设想的行为已经违法了，身份证号码方案的设计者完全没有必要为了降低违法成本而修改设计的道理！

在《中华人民共和国居民身份证法》第三章、第四章，《电信和互联网用户个人信息保护规定》第一章、第二章，《中华人民共和国个人信息保护法》的规定中，可以合法采集身份证信息的单位只可以通过现场采集和网络采集两种途径，网络采集由用户输入，这种行为不会涉及大量输入，且用户使用的是标准键盘，而现场采集应配备公安系统监制的身份证读取设备，可以直接读取身份证号而不需要手动输入，而题主所说的“所有数字化填写都不能直接调用纯数字键盘”一定是涉及到大量手工输入才产生的不便，这必然是由两种原因造成的，一是违法采集身份证信息，二是题主的单位为节省成本而增加工作人员的工作量，不论哪种，都与身份证号码设计方案无关。

其次，我们想知道为什么会多了一个“X”就必须了解这个“X”的含义。

身份证的最后一位是校验码，这个“X”是由于采用了模11的校验算法，模11的校验算法结果有11个，即“0-10”。校验这个东西，基本上是冗余信息越多，校验越有效，CRC校验不仅能发现信息内容是否正确，甚至能在有限范围内计算出错误信息的位置，但这对身份证号码的意义并不大，身份证号码校验的意义在于防止输入错误，“模11校验”可以校验出绝大多收的故意信息错误，足够用作身份证校验，同时还可以通过“数字+字母”的形式以“1位”占位进行表示，是绝佳的校验方案。

如果采用“模10校验”是不是更好？“模10校验”的结果只有10个，即“0-9”，恰好可以使用1位占位的纯阿拉伯数字进行表示，比“模11校验”更令人感官舒适。看起来好并不一定好，“模10校验”比“模11校验”缺少了邻位交换错误的识别能力，举个例子：“模10校验”是分辨不出来身份证号“110310191902028042”和“110310191920208042”的区别的，而写错位的行为在输入身份证号的过程中是经常发生的，所以方案设计中选择了不太美观的“模11校验”

那么如果把身份证号变成19位是不是更好呢？答案是不好，因为每个身份证多了一位相当于多了一个字节，以15亿人口计算，那就是多了1.5G的计算字节。有学过计算机的朋友就该说了，胡说八道，采用浮点数存储的话，一个身份证号用4个字节就够了，哪怕再增加十位二十位的都不成问题，怎么就增加一个字节了？是的，浮点数可以用4字节表示不大于2^127的数值，但是其有效位是有限的，对于按位表意的串码，进行OCR分析处理的时候，不得不把他恢复成单字节字符进行处理，或者按表意组分别处理，还是挺麻烦的。