core.base.bit
此模块为 Xmake 中的 Lua 脚本提供位运算操作。
提示
使用此模块需要先导入:import("core.base.bit")
概述
尽管 Lua 5.4+ 原生支持位运算操作符,但 xmake 还可以切换到 luajit 作为 runtime。为了兼容性,这边提供了 bit 模块,提供更通用的位运算操作。
此模块提供了一组通用的位运算操作,无论在标准 Lua 还是 LuaJIT 环境下都能保持一致的工作。
bit.band
- 位与运算
函数原型
API
lua
bit.band(a: <number>, b: <number>)参数说明
| 参数 | 描述 |
|---|---|
| a | 必需。第一个数字 |
| b | 必需。第二个数字 |
返回值说明
| 类型 | 描述 |
|---|---|
| number | 返回 a 和 b 的位与结果 |
用法说明
lua
import("core.base.bit")
local result = bit.band(5, 3) -- 返回 1bit.bor
- 位或运算
函数原型
API
lua
bit.bor(a: <number>, b: <number>)参数说明
| 参数 | 描述 |
|---|---|
| a | 必需。第一个数字 |
| b | 必需。第二个数字 |
返回值说明
| 类型 | 描述 |
|---|---|
| number | 返回 a 和 b 的位或结果 |
用法说明
lua
import("core.base.bit")
local result = bit.bor(5, 3) -- 返回 7bit.bxor
- 位异或运算
函数原型
API
lua
bit.bxor(a: <number>, b: <number>)参数说明
| 参数 | 描述 |
|---|---|
| a | 必需。第一个数字 |
| b | 必需。第二个数字 |
返回值说明
| 类型 | 描述 |
|---|---|
| number | 返回 a 和 b 的位异或结果 |
用法说明
lua
import("core.base.bit")
local result = bit.bxor(5, 3) -- 返回 6bit.bnot
- 位非运算
函数原型
API
lua
bit.bnot(a: <number>)参数说明
| 参数 | 描述 |
|---|---|
| a | 必需。要取反的数字 |
返回值说明
| 类型 | 描述 |
|---|---|
| number | 返回 a 的位非结果 |
用法说明
lua
import("core.base.bit")
local result = bit.bnot(5) -- 返回 5 的位非结果bit.lshift
- 左移运算
函数原型
API
lua
bit.lshift(a: <number>, b: <number>)参数说明
| 参数 | 描述 |
|---|---|
| a | 必需。要移动的数字 |
| b | 必需。左移的位数 |
返回值说明
| 类型 | 描述 |
|---|---|
| number | 返回 a 左移 b 位的结果 |
用法说明
lua
import("core.base.bit")
local result = bit.lshift(5, 2) -- 返回 20 (5 << 2)bit.rshift
- 右移运算
函数原型
API
lua
bit.rshift(a: <number>, b: <number>)参数说明
| 参数 | 描述 |
|---|---|
| a | 必需。要移动的数字 |
| b | 必需。右移的位数 |
返回值说明
| 类型 | 描述 |
|---|---|
| number | 返回 a 右移 b 位的结果 |
用法说明
lua
import("core.base.bit")
local result = bit.rshift(20, 2) -- 返回 5 (20 >> 2)bit.tobit
- 转换为 32 位整数
函数原型
API
lua
bit.tobit(x: <number>)参数说明
| 参数 | 描述 |
|---|---|
| x | 必需。要转换的数字 |
返回值说明
| 类型 | 描述 |
|---|---|
| number | 返回 x 掩码为 32 位整数后的值 (0xffffffff) |
用法说明
lua
import("core.base.bit")
local result = bit.tobit(0x12345678) -- 返回掩码为 32 位后的值bit.tohex
- 转换为十六进制字符串
函数原型
API
lua
bit.tohex(x: <number>, n?: <number>)参数说明
| 参数 | 描述 |
|---|---|
| x | 必需。要转换的数字 |
| n | 可选。十六进制位数(默认: 8)。使用负数表示大写 |
返回值说明
| 类型 | 描述 |
|---|---|
| string | 返回十六进制字符串表示 |
用法说明
lua
import("core.base.bit")
local hex = bit.tohex(255, 2) -- 返回 "ff"
local hex = bit.tohex(255, -2) -- 返回 "FF"
local hex = bit.tohex(255) -- 返回 "000000ff"