1
与えられた64ビットint私は4 x 2bytes intに分割する必要があります。例えばintをバイトとバックに変換する方法
は66309 10進I 4つのint型{0, 1, 3, 5}
の配列にこれを変換する必要が0000 0000 0000 0001 0000 0011 0000 0101
あります。私はどのようにしてluaでそれを行うことができますか?
与えられた64ビットint私は4 x 2bytes intに分割する必要があります。例えばintをバイトとバックに変換する方法
は66309 10進I 4つのint型{0, 1, 3, 5}
の配列にこれを変換する必要が0000 0000 0000 0001 0000 0011 0000 0101
あります。私はどのようにしてluaでそれを行うことができますか?
最初に、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ビットの整数になりたい場合は
は0xFF
から
7
にループで
3
、
8
へのシフト式の
16
、及び六角マスク
0xFFFF
を変更します。
最後に、これはLua 5.3でのみ機能します。このバージョンの前に、外部ライブラリなしでLuaの64ビット整数を正確に表現することはできません。
あなたは正しいです。 1バイト= 8ビット。私は混乱し、1バイト= 4ビットと思った – Steve