我想得到包含二进制数据的字符串CRC32。 我试着用这样的想法:
binascii.crc32(binascii.a2b_uu(my_binary_string))
但它经常会抛出较大字符串的异常。 我的二进制字符串的示例内容:
my_binary_string = "0100101010..."
可能真的很长。 我怎么能这样做?
答案 0 :(得分:1)
for python 3
你在python3中的二进制文件应该是b'10001'
,应该以{{1}}或b
作为前缀来表示字节文字:
B
答案 1 :(得分:1)
Ajay的答案是错误的,因为它将二进制数据视为文字字符串 - 每个1或0被编码为一个单独的字节。
假设您的数据是UTF-8编码的二进制数据,或者只是连接成长字符串的字节,您应该这样做:
import binascii
data = '0110100001100101011011000110110001101111' # 'hello' encoded in UTF-8
int_arr = [int(data[i:i+8], 2) for i in range(0, len(data), 8)] # split the data into 8-bit chunks
print(hex(binascii.crc32(bytes(int_arr))))
# output = 0x3610a686
将正确编码字符串的每个8位。