2017-06-09 4 views
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でそれを行うことができますか?

答えて

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ビットの整数になりたい場合は

0xFFから 7にループで 38へのシフト式の 16、及び六角マスク 0xFFFFを変更します。

最後に、これはLua 5.3でのみ機能します。このバージョンの前に、外部ライブラリなしでLuaの64ビット整数を正確に表現することはできません。

+0

あなたは正しいです。 1バイト= 8ビット。私は混乱し、1バイト= 4ビットと思った – Steve

関連する問題