Xin*_*Xin 5 r machine-learning hashcode
我想要做的是在R中实现一个哈希技巧
代码如下:
library(digest)
a<-digest("key_a", algo='xxhash32')
#[1] "4da5b0f8"
Run Code Online (Sandbox Code Playgroud)
这返回了字符类型的哈希码.有什么办法可以把它变成整数吗?或者还有其他任何包来实现这一目标吗?
从0.6.19版本开始,digest有了一个digest2int函数,虽然没有算法的选择。使用的算法是 Jenkin 的 one_at_a_time。
digest::digest2int("key_a")
#> [1] 1414969953
Run Code Online (Sandbox Code Playgroud)
该输出是十六进制(基数为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)
| 归档时间: |
|
| 查看次数: |
1783 次 |
| 最近记录: |