需要注意的是,CRC16中modbus的crc是小端模式,即低字节在前,高字节在后。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def crc16(x): 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] #return s[4:6] + s[2:4] return a |
转载请注明:徐自远的乱七八糟小站 » python CRC16