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

首先我们回顾一下Unity中有哪些数据类型
char -- C++中是1bit, 在C#Java中是2bit
zbool --1Bit
整形
 byte -- 1byte 8bit
 short-- 2byte 16bit
 int--4byte 32bit
 long
Long类型比较特殊,在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中是2bit
2: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;
     }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值