【发布时间】:2012-07-12 08:13:09
【问题描述】:
我正在尝试将一些 Ruby 代码转换为 Python。我在这条线上遇到了麻烦:
Digest::MD5.digest(message).unpack('L*')
我想我应该使用struct 模块和hashlib 一个,但如果我这样做:
struct.unpack('L', hashlib.md5(message).digest())
我收到此错误:
struct.error: unpack requires a bytes object of length 4
我该怎么办? 谢谢你,
魔方
附:输出应该是一个 4 x 32 位整数的列表:
irb(main):039:0> Digest::MD5.digest('Hash').unpack('L*')
=> [631892218, 1967199614, 3683860954, 4130231798]
【问题讨论】:
-
你试过
struct.unpack('LLLL', hashlib.md5(message).digest())吗?如果这不起作用,请提供您的消息样本。 -
@ThomasOrozco:哇,它有效!你能解释一下
LLLL的格式吗?谢谢! -
LLLL表示“4 个 32 位整数”。因此,如果您想要 4 个 32 位整数,则使用LLLL格式而不是L格式,后者只有 1 个 32 位整数。 -
@ThomasOrozco:太好了!谢谢!