--轉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 進行位或操作,進行判斷