lua 二进制字节与int相互转换
如果看过我转载的http://blog.csdn.net/u013654125/article/details/73381633,而又需要用lua把自定义的二进制数据和protobuf结合把新的数据传给服务器时,因为lua传递的数据是字符串,所以我们需要把字符串写成ascii串,这样才能解析出来。
代码:
-- 工具类 cc.exports.Utils = class("Utils") -- 下面的二进制=ascii -- 二进制转int function Utils:bufToInt32(num1, num2, num3, num4) local num = 0; num = num + self:leftShift(num1, 24); num = num + self:leftShift(num2, 16); num = num + self:leftShift(num3, 8); num = num + num4; return num; end -- int转二进制 function Utils:int32ToBufStr(num) local str = ""; str = str .. self:numToAscii(self:rightShift(num, 24)); str = str .. self:numToAscii(self:rightShift(num, 16)); str = str .. self:numToAscii(self:rightShift(num, 8)); str = str .. self:numToAscii(num); return str; end -- 二进制转shot function Utils:bufToInt16(num1, num2) local num = 0; num = num + self:leftShift(num1, 8); num = num + num2; return num; end -- shot转二进制 function Utils:int16ToBufStr(num) local str = ""; str = str .. self:numToAscii(self:rightShift(num, 8)); str = str .. self:numToAscii(num); return str; end function Utils:leftShift(num, shift) return math.floor(num * (2 ^ shift)); end function Utils:rightShift(num, shift) return math.floor(num/(2^shift)); end function Utils:numToAscii(num) num = num % 256; return string.char(num); end
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: 现代OpenGL教程 01 - 入门指南