3.3final中,bit.lshift报错nil value,但在3.3RC1中正常

项目中用到了bit.lshift方法,该方法在3.3RC1、2.X版本中可以正常运行,但是在3.3FINAL中此方法报错attempt to call field ‘lshift’ (a nil value)

奇怪的是当我在代码中尝试加上require(“bit”)的时候,3.3RC1、2.X版本依旧可以正常运行,但是3.3FINAL中却报错:

更奇怪的是3.3FINAL中bit库的其他函数比如bit.band bit.rshift居然没报nil value的错,求教该怎么在3.3FINAL中正常调用bit.lshift

bit模块现在在cc.uitls.bit

blshift试下它的这个接口

感谢,昨天太晚忘记说了,在3.3FINAL的源码中看到了cc.framefwork.utils下确实多了一个bit.lua的工具类,但是还有个问题是原来bit库里面有一个bit.arshift(a, b)的方法,百度了一下作用是返回a算术偏移到b位,这个方法项目中也同样用到了,但是在bit.lua的工具类里面恰恰没有这个方法。。也没有名字类似的方法。。您知道bit.lua类中哪个方法的作用是类似原来bit中的bit.arshift(a, b)方法么?

我看bit中有blogic_rshift这个接口,你试下是不是这个功能呢

这个昨天试过了。。貌似是不对的。。。

我知道了,原来的bit.dll是luajit中集成的一个库,但是FINAL把luajit换成了lua,所以才找不到了,看来只能用bit.lua了

我也遇到这个问题了 ,我使用blshift 后,调用cc.uilts.ByteArrayVarint 里面的方法 。使用 ByteArrayVarint:writeUVInt 这里面还是调用了lshift 报错。。这个cc.uilts.ByteArrayVarint 里面的文件我修改了一下 lshift-> blshift 好像没有重新编译啊,求教 这个问题不知道怎么解决

楼主你好 , 我也碰到这个问题 现在bit.rshift 能用 bit.bor, bit.lshift 不能用 具体要怎么做呀?

这不是搞笑么。。 用lua实现的怎么能比的上c的效率呢, 怎么不从lua 的bit c库考一个导出呢

同样碰到这个问题,
在bitExtend.lua 中加入了
function bit._lshift(a,n)
local op1=bit._d2b(a)
n = n <= 32 and n or 32
n = n >= 0 and n or 0

for i=1, 32-n do
    op1* = op1*
end
for i=32, 32-n+1 do
    op1* = 0
end

return  bit._b2d(op1)

end

bit.lshift = bit.lshift or bit._lshift
bit.bor = bit.bor or bit._or
调用bit.bor还是出错,请大家继续顶起来***

把cc.uilts.ByteArrayVarint.lua和PacketBuffer.lua中的bit.rshift 和bit.lshift,分别替换成 bit.brshift和bit.blshift。已经可以愉快的运行了!

我昨天用cocos 3.5 bit.lshift也报了相同的错,难道cocos3.2 以上的得用bit.lua?