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中修复此问题?
答案 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。