如何在R中将哈希码作为整数?

Xin*_*Xin 5 r machine-learning hashcode

我想要做的是在R中实现一个哈希技巧

代码如下:

library(digest)
a<-digest("key_a", algo='xxhash32')
#[1] "4da5b0f8"
Run Code Online (Sandbox Code Playgroud)

这返回了字符类型的哈希码.有什么办法可以把它变成整数吗?或者还有其他任何包来实现这一目标吗?

Aur*_*èle 9

从0.6.19版本开始,digest有了一个digest2int函数,虽然没有算法的选择。使用的算法是 Jenkin 的 one_at_a_time。

digest::digest2int("key_a")
#> [1] 1414969953
Run Code Online (Sandbox Code Playgroud)


Ati*_*gur 8

该输出是十六进制(基数为16)的字符串.使用以下函数将其更改为十进制.取自另一个论坛帖子但链接不再起作用(2017).

hex_to_int = function(h) {
  xx = strsplit(tolower(h), "")[[1L]]
  pos = match(xx, c(0L:9L, letters[1L:6L]))
  sum((pos - 1L) * 16^(rev(seq_along(xx) - 1)))
}
Run Code Online (Sandbox Code Playgroud)

产量

> hex_to_int(a)
[1] 1302704376
Run Code Online (Sandbox Code Playgroud)

但更好的答案是strtoi:正如@Andrie所说和@Gedrox回答的那样,base :: strtoi函数以同样的方式工作.

strtoi("4da5b0f8", 16)
[1] 1302704376
Run Code Online (Sandbox Code Playgroud)