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