Python CRC16校验算法

Posted 风清云淡 初心不改

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python CRC16校验算法相关的知识,希望对你有一定的参考价值。

def crc16(x, invert):
    a = 0xFFFF
    b = 0xA001
    for byte in x:
        a ^= ord(byte)
        for i in range(8):
            last = a % 2
            a >>= 1
            if last == 1:
                a ^= b
    s = hex(a).upper()
    
    return s[4:6]+s[2:4] if invert == True else s[2:4]+s[4:6]

示例:

print(crc16("012345678", True))
print(crc16("012345678", False))
print(crc16("010600010017", True))

计算结果:

以上是关于Python CRC16校验算法的主要内容,如果未能解决你的问题,请参考以下文章

谁会crc16-ccitt的计算方法,用winform做的,谢谢啦。。。

crc16校验的c语言程序

crc校验码计算方法是啥?

CRC16校验码如何计算

java CRC16 算法

CRC-16/MODBUS 算法