Keal_ 2021-05-20 23:27 采纳率: 100%
浏览 109
已采纳

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读取出来的是一个很大的数字。

  • 写回答

2条回答 默认 最新

  • 关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建