资源说明:主要介绍了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#编程能力至关重要。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。