BinaryReader.ReadInt32 结果出错,是一个很大的数字

BinaryReader.ReadInt32 结果出错,是一个很大的数字

问题描述:

public static byte[] DecodePacket(ref List<byte> dataCache)
        {
            Debug.Log("开始解析消息体....");
            
            if (dataCache.Count < 12)
                return null;

            using (MemoryStream ms = new MemoryStream(dataCache.ToArray()))
            {

                using (BinaryReader br = new BinaryReader(ms, Encoding.UTF8))
                {
                    // 1111 111 1
                    int code = br.ReadInt32();
                    int subcode = br.ReadInt32();
                    int bodyLen = br.ReadInt32();


                    int dataRemainLength = (int)(ms.Length - ms.Position);
                    if (bodyLen > dataRemainLength)
                        return null;


                    byte[] data = br.ReadBytes(bodyLen);
                    //更新一下数据缓存
                    dataCache.Clear();
                    dataCache.AddRange(br.ReadBytes(dataRemainLength));

                    return data;
                }
            }
        }

从服务端接收到一段数据,解析的时候,先读取一个int类型的数据,按道理来说应该是个很小的数字,但是读取到的却是很大的数字。

 

 MemoryStream中的数据应该是6,但是用BinaryReader.ReadInt32读取出来的是一个很大的数字。

你的服务器端是什么语言开发的,可能要做高低字节转换。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632