我正在将一个 Objective-C iOS 应用程序移植到使用 Lua 的 CoronaSDK。我有一个带符号的16 位整数,我想隔离其中的高字节和低字节。在 C 中,您可以简单地执行以下操作:
uint8_t a = (dx >> 8) & 0xff;
uint8_t b = dx & 0xff;
Run Code Online (Sandbox Code Playgroud)
Lua 没有按位运算符。我怎样才能在 Lua 中做到这一点?这是用于扩展 Lua 的移动应用程序和外部二进制库,如果有的话,很可能无法在所有设备上运行。您可以建议针对此问题的任何纯 Lua 解决方案吗?
小智 5
我不知道 Lua,但可以给你一个大概的想法。右移 n 相当于除以 2^n。您可以先除以 2^8 = 256 得到 MSB,然后乘以除以 2^8 得到 LSB。
MSBs = dx / 256
LSBleftsifted = (ds * 256)
LSBs = LSBleftsifted / 256
Run Code Online (Sandbox Code Playgroud)
这是考虑到所有这些都是无符号整数运算。