Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中带有十六进制输入的CRC32校验和_Python_String_Hex_Checksum_Crc32 - Fatal编程技术网

Python中带有十六进制输入的CRC32校验和

Python中带有十六进制输入的CRC32校验和,python,string,hex,checksum,crc32,Python,String,Hex,Checksum,Crc32,我想计算python中十六进制值字符串的CRC32校验和。我找到了zlib.crc32(data)和binascii.crc32(data),但我发现使用这些函数的所有示例都将“data”作为字符串(“例如hello”)。我想将十六进制值作为数据传入,并找到校验和。我尝试将数据设置为十六进制值(例如0x18329a7e),但我得到一个TypeError:必须是string或buffer,而不是int。当我将十六进制值设置为string(例如0x18329a7e)时,函数会进行计算,但我认为它不会

我想计算python中十六进制值字符串的CRC32校验和。我找到了zlib.crc32(data)和binascii.crc32(data),但我发现使用这些函数的所有示例都将“data”作为字符串(“例如hello”)。我想将十六进制值作为数据传入,并找到校验和。我尝试将数据设置为十六进制值(例如0x18329a7e),但我得到一个TypeError:必须是string或buffer,而不是int。当我将十六进制值设置为string(例如0x18329a7e)时,函数会进行计算,但我认为它不会计算正确的校验和。任何帮助都将不胜感激。谢谢

尝试将十六进制值列表转换为字符串:

t = ['\x18', '\x32', '\x9a', '\x7e']
chksum = binascii.crc32(str(t))

我认为您正在寻找:


“传入十六进制值”的确切含义是什么?您是否意识到十六进制只是人类的数字表示,CRC32适用于二进制数据?现在还不清楚您到底想做什么:要计算包含十六进制字符的字符串的CRC32,或者在你的软件中某个地方用十六进制值表示的一些二进制数据。我想计算在我的软件中某个地方用十六进制值表示的一些二进制数据的CRC32。然后Andrew的答案就可以了。我怀疑他是否想将列表转换成这样的字符串。用binascii.crc32(“”.join(t))替换第二行将得到与phihag的答案相同的结果。谢谢!这正是我需要的。结果与在线crc计算器()匹配。我在最初的问题中没有指定,但我也希望输出是一个由8个十六进制值组成的字符串。如果有人想知道的话,下面的代码可以正确格式化输出:'%08X'(binascii.crc32(binascii.a2b_hex('18329a7e'))&0xffffff)再次感谢您的帮助!
>>> import struct,binascii
>>> ncrc = lambda numVal: binascii.crc32(struct.pack('!I', numVal))
>>> ncrc(0x18329a7e)
-1357533383
>>> binascii.crc32(binascii.a2b_hex('18329a7e'))
-1357533383