`
piperzero
  • 浏览: 3534481 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

stream 、 string 、byte[] 间的相互转换 扩展方法

 
阅读更多

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing;

namespace Ims.Bll
{
/// <summary>
/// stream 、 string 、byte[] 间的转换扩展方法类
/// </summary>
public static class StreamExtend
{
#region Stream 扩展
/// <summary>
/// Stream Stream 转换为 byte 数组
/// </summary>
/// <returns></returns>
public static byte[] ToByteArray(this Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
return bytes;
}
/// <summary>
/// Stream 转换为 image 图片
/// </summary>
/// <returns></returns>
public static Image ToImage(this Stream stream)
{
Image img = new Bitmap(stream);
return img;
}
/// <summary>
/// Stream 转换为 string ,使用 Encoding.Default 编码
/// </summary>
/// <returns></returns>
public static string ToStr(this Stream stream)
{
return System.Text.Encoding.Default.GetString(stream.ToByteArray());
}
#endregion

#region byte[] 扩展
/// <summary>
/// byte[] 转换为 stream 流
/// </summary>
/// <returns></returns>
public static Stream ToStream(this byte[] arr)
{
Stream stream = new MemoryStream(arr);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
return stream;
}
/// <summary>
/// byte[] 转换为 Image
/// </summary>
/// <returns></returns>
public static Image ToImage(this byte[] arr)
{
return Image.FromStream(arr.ToStream());
}
/// <summary>
/// 转换为 string,使用 Encoding.Default 编码
/// </summary>
/// <returns></returns>
public static string ToStr(this byte[] arr)
{
return System.Text.Encoding.Default.GetString(arr);
}
#endregion

#region string 扩展
/// <summary>
/// string 转换为 byte[]
/// </summary>
/// <returns></returns>
public static byte[] ToByteArray(this string str)
{
return System.Text.Encoding.Default.GetBytes(str);
}
/// <summary>
/// string 转换为 Stream
/// </summary>
/// <returns></returns>
public static Stream ToStream(this string str)
{
Stream stream = new MemoryStream(str.ToByteArray());
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
return stream;
}
#endregion
}
}

-----------------------------------------------

//测试代码

int sourceLength = 0;//数据源长度
long byteArrLength = 0; //byte[] 的长度
long streamLength = 0; //Stream 的长度
// char 类型
char c = 'A';
byte[] byteArr_c = c.ToString().ToByteArray();
Stream sm_c = c.ToString().ToStream();
sourceLength = 1;
byteArrLength = byteArr_c.Length;
streamLength = sm_c.Length;

//string 类型
string str = "ABCDEF";
byte[] byteArr_str = str.ToByteArray();
Stream sm_str = str.ToStream();
sourceLength = str.Length;
byteArrLength = byteArr_str.Length;
streamLength = sm_str.Length;

//汉字
string cn = "好";
byte[] byteArr_cn = cn.ToByteArray();
Stream sm_cn = str.ToStream();
sourceLength = cn.Length;
byteArrLength = byteArr_cn.Length;
streamLength = sm_cn.Length;

char cn_l = (char)byteArr_cn[0];
char cn_r = (char)byteArr_cn[1];

技术支持:http://www.iqingcao.com转载请保留!

对于上面的代码 http://blog.csdn.net/xxj_jing/article/details/7514046里进行了部分扩展,支持了 stream和byte 的搜索、查找方法!

分享到:
评论

相关推荐

    C# byte数组与Image相互转换的方法

    这里我们将详细探讨如何实现C#中byte数组与Image对象的相互转换,并提供相应的代码实现。 首先,我们来看如何将一个Image对象转换成byte数组。这个过程通常涉及到将图像数据写入到内存流(MemoryStream)中,然后读取...

    C#byte数组与Image的相互转换实例代码

    在这个扩展方法中,我们首先创建Image对象,然后根据其RawFormat获取对应的文件扩展名,最后将图像保存到指定路径。 总结来说,C#中处理byte数组与Image对象的相互转换是常见的操作,主要应用于图像的存储和加载。...

    java常用扩展工具jar包详解

    `commons-lang.jsr`实际上应为`commons-lang.jar`,这个库极大地扩展了标准`java.lang`API,提供了大量的辅助方法,用于: - 字符串操作:如拼接、格式化、查找替换等。 - 数学运算:提供了对基本数值类型的增强...

    C#把图片转换成数据流存入数据库中再读出来变成图片

    在C#编程中,将图片转换为数据流并存储到SQL Server数据库中,以及从数据库中读取数据流再恢复为图片,是一项常见的任务。这通常用于存储用户头像、产品图片等,节省磁盘空间并提高数据传输效率。下面我们将详细讲解...

    C#文件2进制流转换

    2. 使用`File.ReadAllBytes`方法:这是更简洁的方法,它直接读取整个文件到一个`byte[]`数组中。 ```csharp byte[] fileBytes = File.ReadAllBytes("path_to_your_file"); ``` 二、二进制流到文件转换 1. 使用`...

    二进制数据转换成图片

    通常使用`MemoryStream`将字节数组转化为可被图像处理库识别的流,然后利用`.NET`框架中的`Image.FromStream()`方法将流转换为图片对象。 #### 三、具体实现方法 根据提供的代码片段,我们可以进一步详细分析每个...

    ASP.NET文件上传下载方法集合

    3. **转换成二进制字节流保存到数据库及下载方法**:有时需要将文件存储在数据库中,通常以二进制形式。可以使用`System.IO.File.ReadAllBytes()`读取文件为字节数组,然后存入数据库。下载时,从数据库取出字节流,...

    VB6.0 UTF-8转换GB2312函数

    例如,如果你需要在列表框(ListBox)中按字母或数字顺序排列列表项,你可以使用Sort方法,但在此之前,你需要确保所有字符串都已经正确转换为相同的编码格式(例如GB2312)。 在VB6.0中,可以这样使用上述函数: ``...

    DataSet(DataTable)与XML互转

    在深入讨论转换方法之前,我们需要了解一些基础概念: 1. **`DataSet`**:是一个内存中的数据缓存,它可以包含多个表(`DataTable`)。 2. **`DataTable`**:代表一个数据表,类似于数据库中的单个表。 3. **XML**:是...

    FileDown类

    - 方法首先调用 `MapPathFile` 方法将虚拟路径转换为物理路径。 - 使用 `Path.GetExtension` 方法获取文件的扩展名并返回。 #### 2. `MapPathFile` 方法 - **描述**:此方法用于获取文件的物理路径。 - **实现**...

    汉字转换16进制

    3. **C++编程**:在C++中,我们可以使用标准库函数`std::stringstream`,配合`std::hex`和`std::setfill`来实现16进制的转换。例如,将一个整数转换为16进制字符串可以这样做: ```cpp std::stringstream ss; ss...

    Camera.Net动态库及AVI视频生成动态库说明1

    在 WPF 下,需要配合 BitmapConvert.cs 使用将 byte[] 转换成 BitmapImage,WinForm 下需将 byte[] 转换成 Bitmap。 Camera.Net 动态库是一个功能强大且灵活的库,提供了对摄像头的操作能力和视频处理功能,对于...

    2020年java面试专题答案.doc

    Java 面试中涉及到的知识点广泛且深入,以下是对这些关键问题的详细解释: 1. **JDK与JRE的区别**: ...按照数据单位,又分为字节流(Byte Stream)和字符流(Character Stream),分别处理字节数据和字符数据。

    DES加解密算法

    byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream =...

    C# 加密fsfsafasfas

    public static void EncryptFile(string inputFile, string outputFile, byte[] key, byte[] iv) { using (FileStream inputFileStream = new FileStream(inputFile, FileMode.Open)) using (FileStream output...

    c# 加密和解密相关代码

    Convert 类的ToChar 方法用来将指定的值转换为Unicode 字符,该方法为可重载方法,本实例中用到的它 的重载形式如下: public static char ToChar(int value) 参数说明 value:32 位有符号整数。 返回值:等效于...

    BASE64图片解码_解码_vba图片base64_base64_VBa_图片_

    Function Base64Decode(base64String As String) As Byte() ' 创建XMLDOM对象 Dim xml As Object Set xml = CreateObject("MSXML2.DOMDocument") ' 创建DataObject对象 Dim data As Object Set data = ...

    ASP.NET通过byte正确安全的判断上传文件格式

    4. 使用`stream.Read()`方法读取文件流的前两个字节到`byte`数组中,并关闭`Stream`。 5. 将读取到的字节转换为字符串,形成文件标记(`fileFlag = fileByte[0].ToString() + fileByte[1].ToString();`)。 6. 检查...

    C#实现十六进制AES的加解密,字节数组工具类

    3. 创建加密/解密的加密流:使用`CreateEncryptor()`或`CreateDecryptor()`方法生成加密或解密的ICryptoTransform实例,然后结合Stream对象(如MemoryStream或FileStream)创建CryptoStream。 4. 加密/解密数据:...

    WF_Grid.rar

    3. **将Base64数据转换为图像**:使用`Convert.FromBase64String()`方法将Base64字符串转换为字节数组,然后使用`Image.FromStream()`方法创建`System.Drawing.Image`对象。 4. **显示图像在SuperGrid中**:由于...

Global site tag (gtag.js) - Google Analytics