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; } } /// /// 是否读取完了 /// public bool ReadOver { get { if (Position < Length) { return true; } else { return false; } } } /// /// 关闭读写 /// 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; } }