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

时间:2014-12-12 11:45:22

标签: r machine-learning hashcode

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

以下代码:

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

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

3 个答案:

答案 0 :(得分: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)))
}

输出

> hex_to_int(a)
[1] 1302704376

但更好的答案是 strtoi :正如@Andrie所说,@ Gedrox回答, base::strtoi 功能以同样的方式运作。

strtoi("4da5b0f8", 16)
[1] 1302704376

答案 1 :(得分:4)

内置函数base::strtoi

> strtoi("4da5b0f8", 16)
[1] 1302704376

答案 2 :(得分:2)

自版本0.6.19起,digest具有digest2int函数,尽管没有选择算法。使用的算法是詹金的one_at_a_time。

digest::digest2int("key_a")
#> [1] 1414969953