入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

lua 二进制字节与int相互转换

创建时间:2017-08-15 投稿人: 浏览次数:2353

如果看过我转载的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。