你好幼稚 2021-05-25 11:12 采纳率: 0%
浏览 88

这个水卡校验码怎么算啊?[face]emoji:010.png[/face][face]emoji:

这个水卡校验码怎么算啊?[face]emoji:010.png[/face][face]emoji:010.png[/face][face]emoji:010.png[/face]求大佬
  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-06-08 22:51
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题描述: 如何计算水卡校验码? 解答: 水卡校验码通常是从卡号中计算得出,它用于检验卡号是否有效。一般的校验码计算方法包括 Luhm 算法、CRC 校验等。 以 Luhm 算法为例,其计算方式如下:
    1. 从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
    2. 从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
    3. 将奇数位总和加上偶数位总和,如果得到的结果可以被10整除,则此卡号是有效卡号。例如,卡号是:5432123456788881。 (1)奇数位和:1+3+5+8+8+8+4+2 = 39 (2)偶数位乘以2,如果乘积为两位数,将其减去9:7、7、6、5、5、4、4、1 (3)偶数位和:7+7+6+5+5+4+4+1 = 39 (4)奇数位和与偶数位和之和:39+39=78 (5)78 可以被10整除,这说明卡号是有效的。 Python 代码实现:
    def luhm_algorithm(num):
        # 奇数位从右向左相加
        odd_sum = sum(list(map(int, num[-1::-2])))
        # 偶数位从右向左乘2,结果大于10的减9
        even_sum = sum([sum(divmod(int(i)*2, 10)) for i in num[-2::-2]])
        # 奇数位和与偶数位和之和
        return (odd_sum + even_sum) % 10 == 0
    

    参考资料: 1. https://www.jianshu.com/p/ae1a494e6399 2. https://www.cnblogs.com/eecsuzy/p/5106743.html

    评论

报告相同问题?