import hashlib
hash = hashlib.md5
我目前正在尝试了解为什么以下行有效:
hash(np.int64(identifier)).digest()
而这一行没有:
hash(identifier).digest()
第二行基本上显示以下错误: object supporting the buffer API required
作为旁注,该identifier
变量是一个整数。据我所知,整数(Python 中的默认整数)占用 32 位(或 4 个字节),而 numpy 的 np.int64 占用 64 位(或 8 个字节)的内存。
那么,为什么第一行有效而第二行无效?这是md5的要求吗?
它之所以有效,是因为 numpy 整数足以实现所谓的Buffer API。hashlib.md5 需要一个类似字节的对象。python int 不是类似字节的对象。一个实现了 Buffer API 的对象可以被转换成一个类似字节的对象。它与一般的 MD5 算法无关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句