- 打卡等级:本地老炮
- 打卡总天数:377
- 打卡月天数:25
- 打卡总奖励:375
- 最近打卡:2025-12-25 08:50:09
|
适用版本:新源端Lua 5.0.1
下载链接:DLL动态库下载
bit32 函数清单
1) 逻辑运算
-
bit32.band(x1, x2, ...)
按位与 AND(可变参数)
例:bit32.band(7, 3) --> 3
-
bit32.bor(x1, x2, ...)
按位或 OR(可变参数)
例:bit32.bor(1, 2, 4) --> 7
-
bit32.bxor(x1, x2, ...)
按位异或 XOR(可变参数)
例:bit32.bxor(5, 3) --> 6
-
bit32.bnot(x)
按位取反 NOT(32 位)
例:bit32.bnot(0) --> 0xFFFFFFFF
-
bit32.btest(x1, x2, ...)
测试 AND 结果是否非 0(返回 boolean)
例:bit32.btest(0x10, 0x10) --> true
2) 位移运算
-
bit32.lshift(x, disp)
逻辑左移(disp 可为负,负数相当于右移)
例:bit32.lshift(1, 3) --> 8
-
bit32.rshift(x, disp)
逻辑右移(高位补 0;disp 可为负,负数相当于左移)
例:bit32.rshift(8, 3) --> 1
-
bit32.arshift(x, disp)
算术右移(保留符号位;负数高位补 1)
例:bit32.arshift(0x80000000, 1) --> 0xC0000000
3) 循环旋转
-
bit32.lrotate(x, disp)
32 位循环左旋
例:bit32.lrotate(0x00000001, 1) --> 0x00000002
-
bit32.rrotate(x, disp)
32 位循环右旋
例:bit32.rrotate(0x00000001, 1) --> 0x80000000
4) 位域操作
-
bit32.extract(x, field [, width])
从 x 中取出位域:从 field 开始取 width 位(默认 width=1)
例:bit32.extract(0x12345678, 8, 8) --> 0x56
-
bit32.replace(x, v, field [, width])
把 x 的位域替换为 v 的低 width 位
例:bit32.replace(0x12345678, 0xAA, 8, 8) --> 0x1234AA78
使用约束
- 参数应当是“32 位无符号整数值”(
3、3.0 , OK,3.14 会报错/不被接受)
|
|