当前位置 : 主页 > 网络编程 > lua >

Lua中的“按位与”

来源:互联网 收集:自由互联 发布时间:2021-06-23
我正在尝试将代码从C转换为Lua,我遇到了问题. 如何在Lua中翻译按位AND? 源代码包含: if((command 0x80)== 0) … 怎么能在Lua做到这一点? 我正在使用Lua 5.1.4-8 这是纯Lua 5.1中基本的,孤立的按
我正在尝试将代码从C转换为Lua,我遇到了问题.
如何在Lua中翻译按位AND?
源代码包含:

if((command& 0x80)== 0)
   …

怎么能在Lua做到这一点?

我正在使用Lua 5.1.4-8

这是纯Lua 5.1中基本的,孤立的按位和实现:

function bitand(a, b)
    local result = 0
    local bitval = 1
    while a > 0 and b > 0 do
      if a % 2 == 1 and b % 2 == 1 then -- test the rightmost bits
          result = result + bitval      -- set the current bit
      end
      bitval = bitval * 2 -- shift left
      a = math.floor(a/2) -- shift right
      b = math.floor(b/2)
    end
    return result
end

用法:

print(bitand(tonumber("1101", 2), tonumber("1001", 2))) -- prints 9 (1001)
网友评论