我需要计算随机 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/

10-16 21:40