身份证加权因子

你说的是身份证最后一位校验码的计算吧。
校验码,我们平常也叫它识别码。校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

n 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
身份证号码位置i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
对应的加权因子Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

Wi行的数字就是身份证号码从左到右对应的每个位置的加权因子。
加权因子的公式是:2的n-1次幂除以11取余数,n就是那个i,从右向左排列。比如i=5,那加权因子就是:2的4次幂除以11,也就是4个2相乘=16,16除以11,余数是5.又如i=6,就是5个2相乘=32,32除以11,余数是10.加权因子正确。再如i=8 ,7个2相乘=128,128除以11,余数是7. i=10,9个2相乘=512,512除以11,余数是6.统统都正确。
所以你可以放心的相信了,这是正确的公式!!好好利用吧!
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
身份证校验码是用来验证身份证号码是否有效的一位数字。校验码是通过对身份证号码的前17位数字按照一定的算法进行处理得到的。如果身份证号码最后一位与计算出的校验码不一致,那么该身份证就是无效的。 下面是使用Python实现身份证校验码的示例代码: ```python def validate_id_card(id_card): # 将身份证号码的前17位转换为整数列表 id_list = [int(x) for x in id_card[:17]] # 加权因子 weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] # 校验码对应值 check_code_dict = { 0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2' } # 计算身份证号码前17位与加权因子的乘积之和 sum = 0 for i in range(17): sum += id_list[i] * weight_factor[i] # 取模得到校验码对应的值 check_code = check_code_dict[sum % 11] # 判断身份证号码的校验码是否正确 if check_code == id_card[17]: return True else: return False # 调用函数进行身份证校验 id_card = '110101199001011234' # 身份证号码 result = validate_id_card(id_card) print(result) # 输出:True ``` 这段代码中,我们定义了一个`validate_id_card`函数,该函数接收一个身份证号码作为参数,并返回一个布尔值,表示该身份证号码是否有效。函数内部首先将身份证号码的前17位转换为整数列表,然后根据加权因子和校验码对应值的规则计算出校验码,最后判断身份证号码的校验码是否与计算出的校验码一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值