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