我应该有一个十六进制数组,但始终被binascii.crc32()视为“ str”。
例如:data = ['aa', 'bb', 'cc'].
这是用于框架构建,以便将其放入Wireshark以特定格式可打开的txt文件中(不是问题,在这里工作正常)。
如文档所示:
print(binascii.crc32(b"hello world"))
有效。
我试图使用bin()将数据转换为二进制,这给了我
data = ['10101010', '10111011', '11001100']
但是永远不会将其视为二进制文件。
我尝试使用bytes()方法将其转换,但仅设法再次将其转换为ASCII。
def toBin(data):
data2=[]
for iBcl in range (1,len(data)):
if iBcl%2!=0:
binary=bin(int(data[iBcl-1]+data[iBcl],16))[2:]
data2.append(binary)
print(data2)
return data2
data="aabbcc"
data2=toBin(data)
print(binascii.crc32(data2[0]+data2[1]+data2[2]))
根据在线CRC32计算器得出的结果应该是
0xBE4DF84C
,但出现以下错误:
TypeError: a bytes-like object is required, not 'str'
我没有使用bytes()方法得到错误,但是然后使用ASCII字符计算了CRC32,这给了我错误的crc。
答案 0 :(得分:0)
您有一个十六进制数据列表。您可以使用binascii.unhexlify
转换每个字节,然后加入所有字节:
b = b''.join((binascii.unhexlify(i) for i in data))
print(b)
给予预期
b'\xaa\xbb\xcc'
您可以控制crc32:
print(hex(binascii.crc32(b)))
给出:
0xbe4df84c