我发现包中有调用.hex.to.dec的函数fBasics.
当我这样做时.hex.to.dec(a),它有效.
我有一个数据框,其中samp_column包含由以下值组成的列:
a373, 115c6, a373, 115c6, 176b3
Run Code Online (Sandbox Code Playgroud)
当我这样做时.hex.to.dec(samp_column),我收到此错误:
"nchar(b)中的错误:'nchar()'需要一个字符向量"
当我这样做时.hex.to.dec(as.character(samp_column)),我收到此错误:
"rep中的错误(base.out,1 + ceiling(log(max(number),base = base.out))):无效的'times'参数"
这样做的最佳方式是什么?
Sim*_*lon 30
使用base::strtoi转换十六进制字符向量整数:
strtoi(c("0xff", "077", "123"))
#[1] 255 63 123
Run Code Online (Sandbox Code Playgroud)
小智 11
有一种简单而通用的方法可以使用"C/C++方式"转换hex < - >其他格式:
V <- c(0xa373, 0x115c6, 0xa373, 0x115c6, 0x176b3)
sprintf("%d", V)
#[1] "41843" "71110" "41843" "71110" "95923"
sprintf("%.2f", V)
#[1] "41843.00" "71110.00" "41843.00" "71110.00" "95923.00"
sprintf("%x", V)
#[1] "a373" "115c6" "a373" "115c6" "176b3"
Run Code Online (Sandbox Code Playgroud)
正如@user4221472 的回答中提到的,strtoi()大于 2^31 的整数溢出。
最简单的方法是使用as.numeric().
V <- c(0xa373, 0x115c6, 0x176b3, 0x25cf40000)
as.numeric(V)
#[1] 41843 71110 95923 10149429248
Run Code Online (Sandbox Code Playgroud)
小智 5
strtoi()限制为31位.高位设置的十六进制数字返回NA:
> strtoi('0x7f8cff8b')
[1] 2139946891
> strtoi('0x8f8cff8b')
[1] NA
Run Code Online (Sandbox Code Playgroud)