给定64位int我需要将其拆分为4 x 2bytes int。
例如decimal 66309是0000 0000 0000 0001 0000 0011 0000 0101
我需要将其转换为4个整数{0, 1, 3, 5}
的数组。我怎么能在lua中做到这一点?
答案 0 :(得分:2)
首先,将66309转换为4个16位整数不是{0, 1, 3, 5}
,而是{0, 0, 1, 773}
。在您的示例中,您将其拆分为8位整数。下面是16位整数。
local int = 66309
local t = {}
for i = 0, 3 do
t[i+1] = (int >> (i * 16)) & 0xFFFF
end
如果您希望它是8位整数,请将循环中的3
更改为7
,将班次表达式中的16
更改为8
,并将十六进制更改为将0xFFFF
隐藏到0xFF
。
最后,这只适用于Lua 5.3。在没有外部库的此版本之前,您无法准确表示Lua中的64位整数。