145 lines
2.5 KiB
C#
145 lines
2.5 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
public class ByteArray
|
|
{
|
|
MemoryStream ms = new MemoryStream();
|
|
BinaryReader br;
|
|
BinaryWriter bw;
|
|
public ByteArray()
|
|
{
|
|
bw = new BinaryWriter(ms);
|
|
br = new BinaryReader(ms);
|
|
}
|
|
|
|
public ByteArray(byte[] buff)
|
|
{
|
|
ms = new MemoryStream(buff);
|
|
br = new BinaryReader(ms);
|
|
bw = new BinaryWriter(ms);
|
|
}
|
|
|
|
|
|
#region 读取消息
|
|
public void Read(out int vaule)
|
|
{
|
|
vaule = br.ReadInt32();
|
|
}
|
|
public void Read(out byte value)
|
|
{
|
|
value = br.ReadByte();
|
|
}
|
|
public void Read(out byte[] vaule, int length)
|
|
{
|
|
vaule = br.ReadBytes(length);
|
|
}
|
|
public void Read(out bool value)
|
|
{
|
|
value = br.ReadBoolean();
|
|
}
|
|
public void Read(out string value)
|
|
{
|
|
value = br.ReadString();
|
|
}
|
|
public void Read(out long value)
|
|
{
|
|
value = br.ReadInt64();
|
|
}
|
|
public void Read(out double value)
|
|
{
|
|
value = br.ReadDouble();
|
|
}
|
|
public void Read(out float value)
|
|
{
|
|
value = br.ReadSingle();
|
|
}
|
|
#endregion
|
|
|
|
#region 编写消息
|
|
public void Write(int value)
|
|
{
|
|
bw.Write(value);
|
|
}
|
|
public void Write(byte value)
|
|
{
|
|
bw.Write(value);
|
|
}
|
|
public void Write(bool value)
|
|
{
|
|
bw.Write(value);
|
|
}
|
|
public void Write(byte[] value)
|
|
{
|
|
bw.Write(value);
|
|
}
|
|
public void Write(string value)
|
|
{
|
|
bw.Write(value);
|
|
}
|
|
public void Write(long value)
|
|
{
|
|
bw.Write(value);
|
|
}
|
|
public void Write(double value)
|
|
{
|
|
bw.Write(value);
|
|
}
|
|
public void Write(float value)
|
|
{
|
|
bw.Write(value);
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
public int Length
|
|
{
|
|
get
|
|
{
|
|
return (int)ms.Length;
|
|
}
|
|
}
|
|
public int Position
|
|
{
|
|
get
|
|
{
|
|
return (int)ms.Position;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 是否读取完了
|
|
/// </summary>
|
|
public bool ReadOver
|
|
{
|
|
get
|
|
{
|
|
if (Position < Length)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 关闭读写
|
|
/// </summary>
|
|
public void Close()
|
|
{
|
|
br.Close();
|
|
bw.Close();
|
|
ms.Close();
|
|
}
|
|
|
|
public byte[] GetBuffer()
|
|
{
|
|
byte[] result = new byte[ms.Length];
|
|
Buffer.BlockCopy(ms.GetBuffer(), 0, result, 0, (int)ms.Length);
|
|
return result;
|
|
}
|
|
}
|