获取长十六进制哈希

2024-06-16 10:41:09 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将这个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等价于pythonint(<>, 16)吗?你知道吗


Tags: 代码importreturndefmd5utfencodeint
2条回答

正如注释中所建议的,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"

安装Rmpfr包需要安装MPFRGMP。你知道吗

相关问题 更多 >