计算HEX字符串的CRC-CCITT(0xFFFF)

时间:2014-10-05 15:20:22

标签: python python-3.x crc crc32

我正在尝试为HEX字符串计算CRC-CCITT(0xFFFF)并将结果作为HEX字符串返回。我尝试了binasciicrc16,但我获得了int值,当我将它们转换为HEX时,它不是我期望的值。我需要这个:

hex_string = "AA01"
crc_string = crccitt(hex_string)
print("CRC: ", crc_string)

>>> CRC: FF9B

1 个答案:

答案 0 :(得分:1)

您可以使用str.format / format将int值转换为十六进制格式:(使用crc16获取crc)

>>> import binascii
>>> import crc16
>>> hex_string = 'AA01'
>>> crc = crc16.crc16xmodem(binascii.unhexlify(hex_string), 0xffff)
>>> '{:04X}'.format(crc & 0xffff)
'FF9B'
>>> format(crc & 0xffff, '04X')
'FF9B'

或使用% operator

>>> '%04X' % (crc & 0xffff)
'FF9B'

import binascii
import crc16

def crccitt(hex_string):
    byte_seq = binascii.unhexlify(hex_string)
    crc = crc16.crc16xmodem(byte_seq, 0xffff)
    return '{:04X}'.format(crc & 0xffff)