--转2进制
function numberToBits(src)
local result = {}
local bitLen = 32
for i = 1, bitLen do
result[i] = src % 2
src = math.floor(src / 2)
end
return result
end
注释: 定义一个数组,然后把传入的数转成二进制
--获取当前第一个非0值的位数
function getBitOrder(src)
local bitLen = 32
local result = 0
for i=1, bitLen do
if src[i]==1 then
result = i
return result
end
end
return 0
end
注释:这个用来作为标准值的判断,获取标准值的 序号
function isBitIn(src, haveType)
local _order = getBitOrder(numberToBits(haveType))
local _srcTable = numberToBits(src)
if _srcTable[_order]==1 then
return true
end
return false
end
注释: 判断 src中是否含有 haveType的类型,根据返回值判断
用法:
if isBitIn(0x00800402, 0x00000400) then
end
注释: 判断 0x00800402 跟 0x00000400 进行位或操作,进行判断