我如何将十六进制转换为数字,使符号(+/-)保持在R中?

问题描述 投票:0回答:1

我是第一次张贴海报,如果格式不完全符合要求,请您谅解。

我有一个看起来像这样的数据框,每一行包含三列十六进制字符串:

   id   x
1  1   FFF8
2  2   FFBC
3  3   FFAE
4  4   0068

[如果我理解正确,“ FFF8”应该转换为“ -8”,但是我设法将其转换为正数-“ 65528”。

我用过:

dataframe$x<-as.numeric(dataframe$x)

我没有找到任何可以按预期保持负号的R函数。

任何人都可以在保持预期的负号的同时帮助将十六进制字符串转换为数字吗?

非常感谢。

r hex
1个回答
0
投票

如果您假设高位指示负数,则

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
© www.soinside.com 2019 - 2024. All rights reserved.