C# 二进制字节流读写封装
2017-05-16 19:41
309 查看
完成以下功能:
只针对内存字节流的读写,主要应用于数据的解析和写入。
提供不同数据类型的读写接口,包括byte,short,int,float,string等。
处理了大小端数据转换的问题,所以可用于网络数据的解析和发送。
只针对内存字节流的读写,主要应用于数据的解析和写入。
提供不同数据类型的读写接口,包括byte,short,int,float,string等。
处理了大小端数据转换的问题,所以可用于网络数据的解析和发送。
using System.IO; using System.Net; using System; namespace Framework { public class NetStream { private MemoryStream stream; private BinaryReader reader; private BinaryWriter writer; public NetStream(byte[] buffer = null) { if (buffer == null) { this.stream = new MemoryStream(); } else { this.stream = new MemoryStream(buffer); } this.reader = new BinaryReader(this.stream); this.writer = new BinaryWriter(this.stream); } public void Close() { this.stream.Close(); this.reader.Close(); this.writer.Close(); } //------------------------------------------------------------------------------- public long ReadInt64() { return IPAddress.HostToNetworkOrder(this.reader.ReadInt64()); } public int ReadInt32() { return IPAddress.HostToNetworkOrder(this.reader.ReadInt32()); } public short ReadInt16() { return IPAddress.HostToNetworkOrder(this.reader.ReadInt16()); } public byte ReadByte() { return this.reader.ReadByte(); } public float ReadFloat() { return this.reader.ReadSingle(); } public string ReadString8() { return System.Text.Encoding.UTF8.GetString(this.reader.ReadBytes(ReadByte())); } public string ReadString16() { return System.Text.Encoding.UTF8.GetString(this.reader.ReadBytes(ReadInt16())); } public long Seek(long offset) { return this.stream.Seek(offset, SeekOrigin.Begin); } //------------------------------------------------------------------------------- public void WriteByte(byte value) { this.writer.Write(value); } public void WriteInt16(short value) { this.writer.Write(BitConverter.GetBytes(IPAddress.HostToNetworkOrder(value))); } public void WriteInt32(int value) { this.writer.Write(BitConverter.GetBytes(IPAddress.HostToNetworkOrder(value))); } public void WriteInt64(long value) { this.writer.Write(BitConverter.GetBytes(IPAddress.HostToNetworkOrder(value))); } public void WriteFloat(float value) { this.writer.Write(value); } public void WriteString8(string value) { byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(value); WriteByte((byte) byteArray.Length); this.writer.Write(byteArray); } public void WriteString16(string value) { byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(value); WriteInt16((short) byteArray.Length); this.writer.Write(byteArray); } public byte[] GetBuffer() { return this.stream.ToArray(); } public int GetLength() { return (int) this.stream.Length; } } }
相关文章推荐
- .net C#,access,MDB数据库BLOB二进制字段的读写
- C#读写二进制文件
- C#读写EXCEL的简单封装
- C# 二进制字节流查找函数IndexOf
- C#读写二进制文件
- C#对注册表读写类的再封装
- C#实现的基于二进制读写文件操作示例
- c# 二进制读写
- C# 读写XML文件封装, 直接按类来保存和读取
- 让C#轻松实现读写锁分离--封装ReaderWriterLockSlim
- C#读写二进制文件
- C#读写注册表 二进制写入
- C#封装二进制文件处理
- C# 二进制字节流查找函数IndexOf
- 读写二进制c# 二进制读写
- C#2.0 IO学习之读写二进制文件
- c# 读写文本文件,二进制文件
- C#按二进制模式读写文件
- C#读写EXCEL操作的简单封装
- C# 二进制读写与序列化和反序列化