如何在Python 2.6中使用MD5哈希中的bytearray?

时间:2015-08-21 22:57:26

标签: python bytearray python-2.6

python 2.7和3.4可以执行以下操作:

import hashlib
m = hashlib.md5()
m.update(bytearray(128))

但是python 2.6会生成错误消息:

    m.update(bytearray(128))
TypeError: update() argument 1 must be string or read-only buffer, not bytearray

如何在Python 2.6中修复此问题?

1 个答案:

答案 0 :(得分:1)

在Python 2.x上,您可以在将bytearray传递给update()之前简单地将其转换为字符串,例如:

import hashlib
m = hashlib.md5()
m.update(str(bytearray(128)))

但是,这会在Python 3.x上产生错误的结果,因为bytearray无法直接转换为字符串。对于便携版本,请使用以下代码,这些代码在Python 2.x和3.x上的工作方式相同:

import hashlib
m = hashlib.md5()
m.update(bytearray(128).decode('latin-1'))

有关其原因的详细信息,请参阅this answer