我是第一次张贴海报,如果格式不完全符合要求,请您谅解。
我有一个看起来像这样的数据框,每一行包含三列十六进制字符串:
id x
1 1 FFF8
2 2 FFBC
3 3 FFAE
4 4 0068
[如果我理解正确,“ FFF8”应该转换为“ -8”,但是我设法将其转换为正数-“ 65528”。
我用过:
dataframe$x<-as.numeric(dataframe$x)
我没有找到任何可以按预期保持负号的R函数。
任何人都可以在保持预期的负号的同时帮助将十六进制字符串转换为数字吗?
非常感谢。
如果您假设高位指示负数,则
strtoi(dat$x, base=16)
# [1] 65528 65468 65454 104
dat$x2 <- strtoi(dat$x, base=16)
dat$x3 <- ifelse(bitwAnd(dat$x2, 0x8000) > 0, -0xFFFF-1, 0) + dat$x2
dat
# id x x2 x3
# 1 1 FFF8 65528 -8
# 2 2 FFBC 65468 -68
# 3 3 FFAE 65454 -82
# 4 4 0068 104 104