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 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值