我目前正在尝试将十六进制字符串转换为其有符号int的值。
例:
0000000E - 14
FFFFFFF2 - -14
因此:将值转换为无符号值很容易:
print(tonumber("0000000E", 16)) // outputs 14
负值可以这样解析:
num = tonumber("FFFFFFF2", 16)
print(4294967296 - num - num)
但不幸的是,我需要检测是否已为此设置了MSB。
如果我的lua实现将支持Bit-Library,这将很容易,但是不幸的是事实并非如此。
因此:如何将带符号的十六进制整数转换为LUA编号?
最佳答案
最好的答案可能是埃格(Egor)的评论:
num = (tonumber("FFFFFFF2", 16) + 2^31) % 2^32 - 2^31