为什么哈希时md5算法接受numpy的int64但不接受整数?

Mau*_*cio 0 python hash md5 numpy

import hashlib
hash = hashlib.md5
Run Code Online (Sandbox Code Playgroud)

我目前正在尝试了解以下行的工作原理:

hash(np.int64(identifier)).digest()
Run Code Online (Sandbox Code Playgroud)

而且这行没有:

hash(identifier).digest()
Run Code Online (Sandbox Code Playgroud)

第二行基本上显示以下错误: object supporting the buffer API required

附带说明,identifier变量是整数。据我所知,整数(Python中的默认整数)占用32位(或4个字节),而numpy的np.int64占用64位(或8个字节)的内存。

然后,为什么第一行工作而第二行行不通?这是md5的要求吗?

use*_*432 5

它之所以有效,是因为numpy整数足以实现所谓的Buffer API。hashlib.md5需要一个类似字节的对象。python int不是类似字节的对象。可以将实现Buffer API的对象转换为类似字节的对象。通常,它与MD5算法无关。