是否可以将二代身份证号看做11进制数,然后使用int128存储?
你要愿意的话其实还可以这么压缩数据
如果用二进制表示,首先可以把所有省、县、乡的派出所列表然后用长度为log2总长度向上取整的二进制数表示,生日设定为距离某固定日期(比如已知最老的曾经拥有二代身份证的人的生日)的天数,第17位用4位数字(0到9用四位),校验码不用管可以自己算,然后排一下顺序(把第17位最稳定的垫最低位,派出所随时间变化比较稳定的放中间,生日容易溢出放最高位),目测int64够用
当然,还有一种比较出生的做法,就是按身份证登记顺序排号,int64稳稳够用