我目前正在尝试将十六进制字符串转换为其值作为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数?
答案 0 :(得分:2)
最好的答案可能是Egor的评论:
num = (tonumber("FFFFFFF2", 16) + 2^31) % 2^32 - 2^31