我想在R中实现一个哈希技巧。
代码如下:
library(digest)a<-digest("key_a", algo='xxhash32')#[1] "4da5b0f8"
这返回了一个字符类型的哈希码。有没有办法将其转换为整数?或者有没有其他包可以实现这个功能?
回答:
那个输出是一个十六进制(基数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