使用以下代码,我正在读取文本文件并在屏幕上显示一列。
externalData <- read.delim("testdata.txt", header = FALSE, sep = "@")
i = 1;
while(i < 11) {
appel <- as.character(externalData[i,3,1])
i = i + 1;
print(appel)
}
输出看起来像这样:
我正在尝试将这些值从十六进制转换为十进制。
我尝试了以下操作:
strtoi(c(appel))
但是这似乎不起作用,这只会删除第一个和最后一个引号,并将中间的所有内容都设置为N / A(可能是因为其中包含字母)。
答案 0 :(得分:3)
有3种方法将十六进制(字符)转换为十进制(数字)。
x <- c("158308", "bb1787", "853f91")
# 1.
strtoi(x, base = 16L)
# 2.
as.integer(as.hexmode(x))
# 3.
as.integer(paste0("0x", x))
# more general edition:
# as.integer(ifelse(!grepl("^0x", x), paste0("0x", x), x))
答案 1 :(得分:2)
来自?strtoi
使用C函数strtol根据给定的基数将字符串转换为整数,或者按照C规则选择合适的基数。
参数
x 一个字符向量,或由as.charer强制使用的向量。
基本一个介于2到36(含)之间的整数,或零(默认值)。
1。创建可复制的最小示例
appel <- c("158308", "d8db89")
2。使用strtoi
base
参数的解决方案:
strtoi(appel, base=16)
返回:
[1] 1409800 14211977