十六进制到int32值

时间:2016-05-24 10:56:58

标签: lua int32

我目前正在尝试将十六进制字符串转换为其值作为signed int。

示例:

0000000E - 14
FFFFFFF2 - -14

所以:转换无符号值的值很简单:

print(tonumber("0000000E", 16)) // outputs 14

负值可以像这样解析:

num = tonumber("FFFFFFF2", 16)
print(4294967296 - num - num)

但不幸的是,我需要检测MSB是否设置为可行。 如果我的lua实现支持Bit-Library,这将很容易,但不幸的是并非如此。

那么:如何将带符号的十六进制整数转换为LUA数?

1 个答案:

答案 0 :(得分:2)

最好的答案可能是Egor的评论:

num = (tonumber("FFFFFFF2", 16) + 2^31) % 2^32 - 2^31