Bit 存储操作代码碎片
Lua 版本
-- 返回0或1 function GetBit(value, index) return value >> index & 1 end -- bitValue取值 0或1,返回存储后数值 function SetBit(value, index, bitValue) local val = 1 << index return bitValue > 0 and (value | val) or (value & ~val) end
基于上面,很快就有了下面两个高级方法
-- 返回0或1 , array = {number, number, number, ...} function GetBitInArray(array, index) local x = math.floor(index / 32) local y = index % 32 return GetBit(array[x + 1] or 0, y) end function SetBitInArray(array, index, bitValue) local x = math.floor(index / 32) local y = index % 32 local cnt = #array if cnt < x + 1 then for i = cnt, x do table.insert(array, 0) end array[x + 1] = SetBit(array[x + 1], y, bitValue) end
以上方法的用处;
可以用来标记比如一串的成就,哪些达成,哪些没有达成。任务的完成情况,宝箱的领取情况等。
比如数字1 就可标注32个位置的信息 0000 0000 0000 0000 0000 0000 0000 0001
作者:大表哥的笔记
提示:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。
如果对文章有任何问题,都可以再评论中留言,我会尽可能的答复您,谢谢你的阅读