如何在R中十进制和​​十六进制之间进行转换?

时间:2017-08-08 16:27:01

标签: r hex decimal

我在R中运行下面的代码,它不会返回原始的十进制数。

as.hexmode(-8192)
"ffffe000"

strtoi(c("ffffe000"))
NA

2 个答案:

答案 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仅处理未签名的整数。