跳转到内容

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)  -- 返回 1

bit.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)  -- 返回 7

bit.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)  -- 返回 6

bit.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"