如何将 int 转换为 byte ,然后再转回来

给定一个64位的 int ,我需要将其分成4个2字节int 。

例如,十进制数 66309 为 0000 0000 0000 0001 0000 0011 0000 0101

我需要将其转换为4个 int 的数组 {0, 1, 3, 5} 。我该如何在 lua 中实现它?

点赞
用户6614127
用户6614127

首先,将66309转换为四个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位整数,除非使用外部库。

2017-06-09 06:51:39