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 - 入门指南
