C#实现Stream与byte[]之间的转换实例教程
文件大小: 33k
源码售价: 10 个金币 积分规则     积分充值
资源说明:主要介绍了C#实现Stream与byte[]之间的转换方法,具体讲解了二进制转换成图片、byte[]与string的转换、Stream 和 byte[] 之间的转换、Stream 和 文件之间的转换、从文件读取 Stream以及Bitmap 转化为 Byte[]等,需要的朋友可以参考下 在C#编程中,Stream和byte[]是两种常见的数据处理对象。Stream代表了一种抽象的数据流,它可以是内存中的数据、硬盘上的文件或是网络传输的数据。而byte[]则是一个字节数组,常用于存储二进制数据。两者之间进行转换在处理文件、图像和网络数据时非常常见。以下是对标题和描述中涉及的知识点的详细说明: 1. **二进制转换成图片** 当我们有一个包含图片二进制数据的byte[],可以通过创建MemoryStream并将其作为参数传递给Image.FromStream()方法来创建一个Image对象。例如: ```csharp MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream(ms); ms.Close(); pictureBox1.Image = img; ``` 这里,pictureBox1.Image用于显示创建的Image对象。 2. **byte[]与string的转换** - 使用UnicodeEncoding,我们可以将字符串转换为字节数组,反之亦然: ```csharp UnicodeEncoding converter = new UnicodeEncoding(); byte[] inputBytes = converter.GetBytes(inputString); string inputString = converter.GetString(inputBytes); ``` - 另一种常见的转换方式是使用Base64编码: ```csharp string inputString = System.Convert.ToBase64String(inputBytes); byte[] inputBytes = System.Convert.FromBase64String(inputString); ``` 3. **Stream与byte[]之间的转换** - 将Stream转换为byte[],我们可以读取Stream的长度并创建相应大小的字节数组,然后读取数据: ```csharp public byte[] StreamToBytes(Stream stream) { byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); stream.Seek(0, SeekOrigin.Begin); return bytes; } ``` - 将byte[]转换回Stream,可以创建一个MemoryStream对象: ```csharp public Stream BytesToStream(byte[] bytes) { Stream stream = new MemoryStream(bytes); return stream; } ``` 4. **Stream与文件之间的转换** - 将Stream写入文件,首先将Stream转换为byte[],再写入文件: ```csharp public void StreamToFile(Stream stream, string fileName) { byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); stream.Seek(0, SeekOrigin.Begin); using (FileStream fs = new FileStream(fileName, FileMode.Create)) { using (BinaryWriter bw = new BinaryWriter(fs)) { bw.Write(bytes); } } } ``` - 从文件读取Stream,先读取文件内容到byte[],然后创建一个MemoryStream: ```csharp public Stream FileToStream(string fileName) { using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { byte[] bytes = new byte[fileStream.Length]; fileStream.Read(bytes, 0, bytes.Length); return new MemoryStream(bytes); } } ``` 5. **Bitmap转化为Byte[]** 在处理图像时,如要将Bitmap对象转换为byte[],可以使用以下方法: ```csharp public byte[] BitmapToByteArray(Bitmap bitmap) { using (MemoryStream ms = new MemoryStream()) { bitmap.Save(ms, ImageFormat.Jpeg); // 或者其他格式 return ms.ToArray(); } } ``` 以上就是C#中关于Stream与byte[]之间转换的基本操作,这些方法在处理二进制数据、图像文件、网络通信等方面非常实用。理解并熟练掌握这些转换方法对于提升C#编程能力至关重要。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。