我如何将int转换为字节和返回

时间:2017-06-09 06:03:05

标签: lua

给定64位int我需要将其拆分为4 x 2bytes int。

例如decimal 66309是0000 0000 0000 0001 0000 0011 0000 0101

我需要将其转换为4个整数{0, 1, 3, 5}的数组。我怎么能在lua中做到这一点?

1 个答案:

答案 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位整数。