python中二进制字符串/二进制数据的CRC32

时间:2015-06-01 13:50:59

标签: python python-3.x crc32

我想得到包含二进制数据的字符串CRC32。 我试着用这样的想法:

binascii.crc32(binascii.a2b_uu(my_binary_string))

但它经常会抛出较大字符串的异常。 我的二进制字符串的示例内容:

my_binary_string = "0100101010..."

可能真的很长。 我怎么能这样做?

2 个答案:

答案 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位。