将 Python 的 binascii.crc_hqx() 转换回 ascii



我使用的是标准Python3库binascii,特别是crc_hqx()函数

binasci.crc_hqx(数据,值(

计算数据的16位CRC值,从值作为初始CRC开始,并返回结果。这使用CRC-CCITT多项式x16+x12+x5+1,通常表示为0x1021。该CRC以binhex4格式使用。

我可以使用以下代码转换为CRC:

import binascii
t = 'abcd'
z = binascii.crc_hqx(t.encode('ascii'), 0)
print(t,z)

正如预期的那样,它打印出行

abcd 43062

但是如何转换回ASCII

我尝试过a2b_hqx()功能的变体

binasci.a2b_hqx(字符串(

将binhex4格式的ASCII数据转换为二进制,无需进行RLE解压缩。该字符串应包含完整数量的二进制字节,或者(在binhex4数据的最后部分的情况下(使剩余位为零。

最简单的版本是:

y = binascii.a2b_hqx(str(z))

但我也尝试过bytearray()str.encode()等的变体。


对于此代码:

import binascii
t = 'abcd'
z = binascii.crc_hqx(t.encode('ascii'), 0)
print(t,z)
y = binascii.a2b_hqx(str(z))

追溯:

abcd 43062
Traceback (most recent call last):
File "test.py", line 5, in <module>
y = binascii.a2b_hqx(str(z))
binascii.Incomplete: String has incomplete number of bytes

有了这个代码:

y = binascii.a2b_hqx(bytearray(z))

此追溯:

binascii.Error: Illegal char

生成的是校验和,不可能转换回ascii。

相关内容

  • 没有找到相关文章