4

Python で 16 進値の文字列の CRC32 チェックサムを計算したいと考えています。zlib.crc32(data) と binascii.crc32(data) を見つけましたが、これらの関数を使用して見つけたすべての例には、文字列として「data」が含まれています (たとえば、「hello」)。16 進数値をデータとして渡し、チェックサムを見つけたい。データを 16 進数値 (たとえば 0x18329a7e) として設定しようとしましたが、TypeError: must be string or buffer, not int が発生します。関数は、16 進値を文字列 (たとえば '0x18329a7e') にすると評価されますが、正しいチェックサムを評価しているとは思いません。どんな助けでも大歓迎です。ありがとう!

4

3 に答える 3

12

私はあなたが探していると思いますbinascii.a2b_hex()

>>> binascii.crc32(binascii.a2b_hex('18329a7e'))
-1357533383
于 2011-04-05T19:51:39.617 に答える
1
>>> import struct,binascii
>>> ncrc = lambda numVal: binascii.crc32(struct.pack('!I', numVal))
>>> ncrc(0x18329a7e)
-1357533383
于 2011-04-05T19:49:31.493 に答える
0

16 進値のリストを文字列に変換してみてください。

t = ['\x18', '\x32', '\x9a', '\x7e']
chksum = binascii.crc32(str(t))
于 2011-04-05T19:41:37.767 に答える