您的位置:首页 > 移动开发 > Unity3D

Unity——Java服务器与C++服务器的区别,在对接的时候为什么会出现数据混乱的情况。

2018-03-27 15:59 417 查看
首先我们回顾一下Unity中有哪些数据类型char -- C++中是1bit, 在C#Java中是2bitzbool --1Bit整形 byte -- 1byte 8bit short-- 2byte 16bit int--4byte 32bit longLong类型比较特殊,在32位的机器上时占 4byte   64位机器上站8byte。很多通信用的都是long整形,那如何才能在网络通讯的时候,所有的机器,不管是32位还是64位的机器上网络通讯的字节都是一样的呢。解决:将long转为浮点数,先转成小数以浮点数传播再乘以比例,比如   0.0001*10000浮点型 float--4byte double--8byte
C++服务器与Java服务器的区别?在C++服务器和Java服务器进行对接的时候, 数据会发生很大的变化,主要原因是C++的数据存储顺序是小端排序,C#/Java的是大端排序1:Char 的表示范围不一样,C++中是1bit, 在C#Java中是2bit2:Byte的表示方式不同, 以Short为例子在C++中是以小端排序Little Endian的0000 0000 0000 0001在Java和C#中是以大端排序Big Endian的0000 0001 0000 0000如何对应这种问题——移位public static void ReverseBytes(byte[] bytes)
{
byte temp;
int length = bytes.Length;

for (int i = 0; i < length / 2; i++ )
{
temp= bytes[length - 1 - i];
bytes[length - 1 - i] = bytes[i];
bytes[i] = tmp;
}
}

//规定转换起始位置和长度
public static void ReverseBytes(byte[] bytes, int start, int len)
{
int end = start + length - 1;
byte temp;
int i = 0;
for (int index = start; index < start + length/2; index++,i++)
{
temp= bytes[end - i];
bytes[end - i] = bytes[index];
bytes[index] = temp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: