计算十六进制字符串的crccitt(0xFFFF)

2024-10-03 13:21:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算十六进制字符串的CRC-CCITT(0xFFFF),并以十六进制字符串的形式返回结果。我尝试了binasciicrc16,但是我得到了int值,当我把它们转换成十六进制时,它不是我期望的值。我需要这个:

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

>>> CRC: FF9B

Tags: 字符串string形式intcrcprinthexbinascii
1条回答
网友
1楼 · 发布于 2024-10-03 13:21:08

可以使用^{}/^{}将int值转换为十六进制格式:(使用^{}获取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

^{pr2}$
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)

相关问题 更多 >