Lua的算术位操作,如与,或,非等,需要依赖一个c扩展模块:Lua BitOp
1,下载源码:http://bitop.luajit.org/download.html
2,解压及编译:make
编译失败,缺少一个宏定义,查看源码后,该宏应该是定义Lua的number类型为哪种类型,可以为double, 或int,或为float。我这里在Makefile里添加-DLUA_NUMBER_DOUBLE进行编译。
3,拷贝bit.so
make install 完成,库已经拷贝到默认库目录下:
4,例子
#!/usr/local/bin/lua
local bitop = require("bit")
print(bitop.tohex(10, -2))
print(bitop.tohex(10, -6))
print(bitop.tohex(1))
print(bitop.tohex(-1))
print(bitop.tohex(0xffffffff))
print(bitop.tohex(-1, -8))
print(bitop.tohex(0x21, 4))
print(bitop.tohex(0x87654321, 4))