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对象的相互转换,并提供相应的代码实现。 首先,我们来看如何将一个Image对象转换成byte数组。这个过程通常涉及到将图像数据写入到内存流(MemoryStream)中,然后读取...
在这个扩展方法中,我们首先创建Image对象,然后根据其RawFormat获取对应的文件扩展名,最后将图像保存到指定路径。 总结来说,C#中处理byte数组与Image对象的相互转换是常见的操作,主要应用于图像的存储和加载。...
`commons-lang.jsr`实际上应为`commons-lang.jar`,这个库极大地扩展了标准`java.lang`API,提供了大量的辅助方法,用于: - 字符串操作:如拼接、格式化、查找替换等。 - 数学运算:提供了对基本数值类型的增强...
在C#编程中,将图片转换为数据流并存储到SQL Server数据库中,以及从数据库中读取数据流再恢复为图片,是一项常见的任务。这通常用于存储用户头像、产品图片等,节省磁盘空间并提高数据传输效率。下面我们将详细讲解...
2. 使用`File.ReadAllBytes`方法:这是更简洁的方法,它直接读取整个文件到一个`byte[]`数组中。 ```csharp byte[] fileBytes = File.ReadAllBytes("path_to_your_file"); ``` 二、二进制流到文件转换 1. 使用`...
通常使用`MemoryStream`将字节数组转化为可被图像处理库识别的流,然后利用`.NET`框架中的`Image.FromStream()`方法将流转换为图片对象。 #### 三、具体实现方法 根据提供的代码片段,我们可以进一步详细分析每个...
3. **转换成二进制字节流保存到数据库及下载方法**:有时需要将文件存储在数据库中,通常以二进制形式。可以使用`System.IO.File.ReadAllBytes()`读取文件为字节数组,然后存入数据库。下载时,从数据库取出字节流,...
例如,如果你需要在列表框(ListBox)中按字母或数字顺序排列列表项,你可以使用Sort方法,但在此之前,你需要确保所有字符串都已经正确转换为相同的编码格式(例如GB2312)。 在VB6.0中,可以这样使用上述函数: ``...
在深入讨论转换方法之前,我们需要了解一些基础概念: 1. **`DataSet`**:是一个内存中的数据缓存,它可以包含多个表(`DataTable`)。 2. **`DataTable`**:代表一个数据表,类似于数据库中的单个表。 3. **XML**:是...
- 方法首先调用 `MapPathFile` 方法将虚拟路径转换为物理路径。 - 使用 `Path.GetExtension` 方法获取文件的扩展名并返回。 #### 2. `MapPathFile` 方法 - **描述**:此方法用于获取文件的物理路径。 - **实现**...
3. **C++编程**:在C++中,我们可以使用标准库函数`std::stringstream`,配合`std::hex`和`std::setfill`来实现16进制的转换。例如,将一个整数转换为16进制字符串可以这样做: ```cpp std::stringstream ss; ss...
在 WPF 下,需要配合 BitmapConvert.cs 使用将 byte[] 转换成 BitmapImage,WinForm 下需将 byte[] 转换成 Bitmap。 Camera.Net 动态库是一个功能强大且灵活的库,提供了对摄像头的操作能力和视频处理功能,对于...
Java 面试中涉及到的知识点广泛且深入,以下是对这些关键问题的详细解释: 1. **JDK与JRE的区别**: ...按照数据单位,又分为字节流(Byte Stream)和字符流(Character Stream),分别处理字节数据和字符数据。
byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream =...
public static void EncryptFile(string inputFile, string outputFile, byte[] key, byte[] iv) { using (FileStream inputFileStream = new FileStream(inputFile, FileMode.Open)) using (FileStream output...
Convert 类的ToChar 方法用来将指定的值转换为Unicode 字符,该方法为可重载方法,本实例中用到的它 的重载形式如下: public static char ToChar(int value) 参数说明 value:32 位有符号整数。 返回值:等效于...
Function Base64Decode(base64String As String) As Byte() ' 创建XMLDOM对象 Dim xml As Object Set xml = CreateObject("MSXML2.DOMDocument") ' 创建DataObject对象 Dim data As Object Set data = ...
4. 使用`stream.Read()`方法读取文件流的前两个字节到`byte`数组中,并关闭`Stream`。 5. 将读取到的字节转换为字符串,形成文件标记(`fileFlag = fileByte[0].ToString() + fileByte[1].ToString();`)。 6. 检查...
3. 创建加密/解密的加密流:使用`CreateEncryptor()`或`CreateDecryptor()`方法生成加密或解密的ICryptoTransform实例,然后结合Stream对象(如MemoryStream或FileStream)创建CryptoStream。 4. 加密/解密数据:...
3. **将Base64数据转换为图像**:使用`Convert.FromBase64String()`方法将Base64字符串转换为字节数组,然后使用`Image.FromStream()`方法创建`System.Drawing.Image`对象。 4. **显示图像在SuperGrid中**:由于...