我在R中运行下面的代码,它不会返回原始的十进制数。
as.hexmode(-8192)
"ffffe000"
strtoi(c("ffffe000"))
NA
答案 0 :(得分:1)
使用base :: strtoi将十六进制字符向量转换为整数:
strtoi(c("0xff", "077", "123"))
#[1] 255 63 123
跨数字基础的转换是难以找到正确帮助页面的任务之一。转换函数遍布各处,名称不同。另请参阅?hexmode, ?as.hexmode, and ?octmode
答案 1 :(得分:1)
strtoi
函数将字符串作为输入(请参见docs)。但是,as.hexmode
函数不会返回整数,而是输入的十六进制表示形式,它不是字符串(它是名为hexmode
AFAIK的类型)。
R documentation建议的正确解决方案是使用as.integer
获得原始输入:
> strtoi(as.hexmode(-8192),16)
[1] NA
> as.integer(as.hexmode(-8192))
[1] -8192
我仍然不清楚问题是否出在使用负输入上。我只能假设strtoi
仅处理未签名的整数。