0

Lua を使用する CoronaSDK に Objective-C iOS アプリケーションを移植しています。符号付き16 ビット整数があり、上位バイトと下位バイトを分離したいと考えています。C では、次のように簡単に実行できます。

uint8_t a = (dx >> 8) & 0xff;
uint8_t b = dx & 0xff;

Lua にはビット単位の演算子はありません。Luaでこれを行うにはどうすればよいですか? これはモバイル アプリケーション用であり、Lua を拡張するための外部バイナリ ライブラリは、すべてのデバイスで機能するとは限りません。あなたが提案できるこの問題に対する純粋な Lua ソリューションはありますか?

4

2 に答える 2

2

@ashの回答に基づいて、いくつかのLua関数を次に示します。それらは一般化できると確信していますが、これは私が必要としていたことを行います:

local function getLowByte16( value )
    local high_value = math.floor(value/256)
    high_value = high_value*256
    local low_value = value - high_value
    return low_value
end

local function getHighByte16( value )
    local high_value = math.floor(value/256)
    return high_value
end
于 2013-04-23T00:13:50.647 に答える