如何将此 Python 代码转换为 R?
import hashlib
def str_buckets(a, b, buckets):
return (int(hashlib.md5(str(a + ',' + b).encode('utf-8')).hexdigest(), 16) & 4294967295) % buckets
我会写
hashlib.md5(b'x,y').hexdigest()
到
digest::digest("x,y", algo="md5", serialize=FALSE)
他们都给我输出 f10bc3c94b77e1d6b9f98106daf335c1
但在Python中
int(hashlib.md5(b'x,y').hexdigest(), 16)
正在输出320405033267698290319193645506345776577
是否有一个R相当于python
的int(<>, 16)
?
最佳答案
正如评论中所建议的,R 本身不具备处理大整数的能力(仅 32 位)。这将给出正确的答案:
d <- digest::digest("x,y", algo="md5", serialize=FALSE)
library(Rmpfr)
m <- mpfr(d,precBits=200,base=16)
## 1 'mpfr' number of precision 200 bits
## [1] 320405033267698290319193645506345776577
但是在 R 中进一步处理这个问题可能具有挑战性。我什至没有找到一种方法来获得与它等效的字符串,该字符串比以下内容更干净:
gsub("\\.0+$","",format(m))
## [1] "320405033267698290319193645506345776577"
关于python - 获取长十六进制哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58053163/