我需要计算随机 md5
字节长数的 8
哈希,所以我试图打包它:
import struct
num = 123L
bin = struct.pack( 'q', num )
这工作正常,但是,对于大的负值:
num = -14710095416404972671L
bin = struct.pack( 'q', num )
我收到此错误:
struct.error: long too large to convert to int
从 python 2.6
我可以通过哪种方式将其转换为 md5 哈希的输入?
最佳答案
你不能,这个数字不适合 8
字节长(有符号)。您可以使用 'q'
提供的最大值是 -2 ** 63
,不少于:
num = -2 ** 63
bin = struct.pack('q', num )
尽管:
num = -2 ** 63 - 1
bin = struct.pack('q', num )
导致
error: argument out of range
。这是上限,使用 'Q'
您可以实现更大的正(无符号)值,但有 2 ** 64
的限制。关于python - 如何在 Python 中将大负长整数打包成二进制字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40745442/