126 lines
3.1 KiB
C#
126 lines
3.1 KiB
C#
//////////////////////////////////////////////////////////////////////////
|
||
//
|
||
// 文件:Assets/Code/Scripts/Framework/Net/Base/NetReader.cs
|
||
// 作者:Xoen Xie
|
||
// 时间:2023/07/18
|
||
// 描述:二进制流式读,小端
|
||
// 说明:
|
||
//
|
||
//////////////////////////////////////////////////////////////////////////
|
||
|
||
|
||
using System;
|
||
using System.Text;
|
||
|
||
namespace Framework
|
||
{
|
||
public sealed class NetReader
|
||
{
|
||
private byte[] m_Buffer;
|
||
private int m_nCurPos;
|
||
|
||
public byte[] Buffer { get { return m_Buffer; } }
|
||
public int CurPos { get { return m_nCurPos; } }
|
||
|
||
public void Init(byte[] buffer, int pos = 0)
|
||
{
|
||
m_Buffer = buffer;
|
||
m_nCurPos = pos;
|
||
}
|
||
|
||
public void ReadByte(out byte value)
|
||
{
|
||
value = m_Buffer[m_nCurPos++];
|
||
}
|
||
|
||
public void ReasSbyte(out sbyte value)
|
||
{
|
||
value = (sbyte)m_Buffer[m_nCurPos++];
|
||
}
|
||
|
||
public void ReadShort(out short value)
|
||
{
|
||
value = BitConverter.ToInt16(m_Buffer, m_nCurPos);
|
||
m_nCurPos += sizeof(short);
|
||
}
|
||
|
||
public void ReadUShort(out ushort value)
|
||
{
|
||
value = BitConverter.ToUInt16(m_Buffer, m_nCurPos);
|
||
m_nCurPos += sizeof(ushort);
|
||
}
|
||
|
||
public void ReadInt(out int value)
|
||
{
|
||
value = BitConverter.ToInt32(m_Buffer, m_nCurPos);
|
||
m_nCurPos += sizeof(int);
|
||
}
|
||
|
||
public void ReadUInt(out uint value)
|
||
{
|
||
value = BitConverter.ToUInt32(m_Buffer, m_nCurPos);
|
||
m_nCurPos += sizeof(uint);
|
||
}
|
||
|
||
public void ReadLong(out long value)
|
||
{
|
||
value = BitConverter.ToInt64(m_Buffer, m_nCurPos);
|
||
m_nCurPos += sizeof(long);
|
||
}
|
||
|
||
public void ReadULong(out ulong value)
|
||
{
|
||
value = BitConverter.ToUInt64(m_Buffer, m_nCurPos);
|
||
m_nCurPos += sizeof(ulong);
|
||
}
|
||
|
||
public void ReadBool(out bool value)
|
||
{
|
||
value = BitConverter.ToBoolean(m_Buffer, m_nCurPos);
|
||
m_nCurPos += sizeof(bool);
|
||
}
|
||
|
||
public void ReadFloat(out float value)
|
||
{
|
||
value = BitConverter.ToSingle(m_Buffer, m_nCurPos);
|
||
m_nCurPos += sizeof(float);
|
||
}
|
||
|
||
public void ReadDouble(out double value)
|
||
{
|
||
value = BitConverter.ToDouble(m_Buffer, m_nCurPos);
|
||
m_nCurPos += sizeof(double);
|
||
}
|
||
|
||
public void ReadU8String(out string value)
|
||
{
|
||
byte length = 0;
|
||
ReadByte(out length);
|
||
|
||
if (length == 0)
|
||
{
|
||
value = null;
|
||
return;
|
||
}
|
||
|
||
value = Encoding.UTF8.GetString(m_Buffer, m_nCurPos, length);
|
||
m_nCurPos += length;
|
||
}
|
||
|
||
public void ReadU16String(out string value)
|
||
{
|
||
ushort length = 0;
|
||
ReadUShort(out length);
|
||
|
||
if (length == 0)
|
||
{
|
||
value = null;
|
||
return;
|
||
}
|
||
|
||
value = Encoding.UTF8.GetString(m_Buffer, m_nCurPos, length);
|
||
m_nCurPos += length;
|
||
}
|
||
}
|
||
}
|