wordpress+4.4,南宁seo外包服务,临沂设计公司有哪些,wordpress 挂载对象存储这几天碰到一个需求是实现身份证最后一位的校验#xff0c;需求文档里面写了个公式#xff0c;没看懂#xff08;数学早就还给老师了#xff09;#xff0c;于是各种查资料#xff0c;发现网上的资料要么只给了说明#xff0c;要么给了个固定的代码#xff0c;但是写的…这几天碰到一个需求是实现身份证最后一位的校验需求文档里面写了个公式没看懂数学早就还给老师了于是各种查资料发现网上的资料要么只给了说明要么给了个固定的代码但是写的不清不楚的没有说明为什么要这么写现在我就自己这几天搜集到的资料做一个简单的总结 首先mod11-2校验规则是遵循了一个国际标准关于mod11-2校验规则的资料自行百度这里就不做详细解释了
其次用java实现mod11-2校验规则的时候一个特别要注意的点就是加权因子网上的代码大都是写死了一个数组int[] coefficients {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}也没个说明鬼tmd的知道这个数组是个什么玩意儿实际上这个是mod11-2校验规则中规定的计算加权因子的公式计算出来的结果因为我们的身份证一般的是18位最后一位可能是字母X所以计算加权因子的时候只算17位那么这个计算公式是什么呢其实很简单就是2的(18-i)次方结果再对11取模的结果就是下面的代码 //身份证前17位每一位对应的加权因子private static int[] weightingFactor() {int[] weightingFactor new int[17];for (int i 1; i 18; i) {weightingFactor[i - 1] (int) (Math.pow(2, 18 - i) % 11);}return weightingFactor;}
有了加权因子就可以计算校验码了校验码的生成规则身份前17位乘以对应的加权因子然后相加最后的总和再对11取模 private static int getMod11CheckCode(String idCard) {//因为weightingFactor返回的结果是固定的所以也可以写死这里只是为了解释这个数组是怎么生成的
// int[] coefficients {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};int[] coefficients weightingFactor();int sum 0;for (int i 0; i 17; i) {sum (idCard.charAt(i) - 0) * coefficients[i];}int checkCode sum % 11;return checkCode;}
最后我们准备一个数组存的是身份证号最后一位数字static char[] checkCodes {1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2};
这样checkCodes[getMod11CheckCode(需要校验的身份号)]如果得到的数字与身份证最后一位是相等的那么就是校验通过了
PS:现在各大AI模型相继问世了有的支持图片识别大家可以用上面那个图片试试