C#中二进制和流之间的各种相互转换

一. 二进制转换成图片间的转换


1

2

3

4

5

MemoryStream ms = new MemoryStream(bytes);

ms.Position = 0;

Image img = Image.FromStream(ms);

ms.Close();

this.pictureBox1.Image

二. C#中byte[]与string的转换代码

1.


1

2

3

System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding();

  byte[] inputBytes =converter.GetBytes(inputString);

  string inputString = converter.GetString(inputBytes);

2.


1

2

3

string inputString = System.Convert.ToBase64String(inputBytes);

  byte[] inputBytes = System.Convert.FromBase64String(inputString);

FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);

三. C# Stream 和 byte[] 之间的转换


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

/// 将 Stream 转成 byte[]

 

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

 

public Stream BytesToStream(byte[] bytes)

{

    Stream stream = new MemoryStream(bytes);

    return stream;

}

四. Stream 和 文件之间的转换

将 Stream 写入文件


1

2

3

4

5

6

7

8

9

10

11

12

13

14

public void StreamToFile(Stream stream,string fileName)

{

    // 把 Stream 转换成 byte[]

    byte[] bytes = new byte[stream.Length];

    stream.Read(bytes, 0, bytes.Length);

    // 设置当前流的位置为流的开始

    stream.Seek(0, SeekOrigin.Begin);

    // 把 byte[] 写入文件

    FileStream fs = new FileStream(fileName, FileMode.Create);

    BinaryWriter bw = new BinaryWriter(fs);

    bw.Write(bytes);

    bw.Close();

    fs.Close();

}

五. 从文件读取 Stream


1

2

3

4

5

6

7

8

9

10

11

12

13

14

public Stream FileToStream(string fileName)

{            

    // 打开文件

    FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);

    // 读取文件的 byte[]

    byte[] bytes = new byte[fileStream.Length];

    fileStream.Read(bytes, 0, bytes.Length);

    fileStream.Close();

    // 把 byte[] 转换成 Stream

    Stream stream = new MemoryStream(bytes);

    return stream;

 

 

}

六Bitmap 转化为 Byte[] 


1

2

3

4

5

6

//Bitmap 转化为 Byte[]

                Bitmap BitReturn = new Bitmap();

                byte[] bReturn = null;

                MemoryStream ms = new MemoryStream();

                BitReturn.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

                bReturn = ms.GetBuffer();

时间: 2024-10-17 11:33:21

C#中二进制和流之间的各种相互转换的相关文章

Java中的IO流系统详解

Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换.而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换.字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高

C++ 11特性中string与数字之间的互相转换

在写C++时经常会遇到字符串string与int等数字之间的相互转化,在java这种语言特性特别丰富的语言中能够通过Integer和String包装类中的函数parseInt和valueOf等函数轻松转换,而在C++中一直没有特别好的处理办法. 在之前的经历中,我都是通过C++中的字符串流stringstream来进行转换的,即通过如下函数: 1 int str2int(string input){ 2 stringstream ss; 3 ss<<input; 4 int res; 5 ss

Floodlight中的临时流表

运行Floodlight,在Mininet中新建一个拓扑之后,并未添加相关的流表项,但是主机之间却可以相互通信.执行pingall操作,任意两个主机之间都能通.相当于没有任何路由表的路由器,它是怎么让这些网络中的主机通信的呢? 原因在于Floodlight默认启用了Forwarding模块.说这个模块之前,首先说说Floodlight 中流表的两种添加方式:主动式和反应式. 官网上的文档是这么说的:http://docs.projectfloodlight.org/display/floodli

Java中字节与对象之间的转换

近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOutputStream两个输出流,以及ByteArrayInputStream和ObjectInputStream两个输入流. 废话不多说了,直接上代码吧! /** * @FileName: ByteToObject.java * @Package:com.test * @Description: T

二进制与十进制之间蛮好的转换方式

假如给你一个二进制 1101101010101  问你转换成10进制是多少  反正 我第一想到的是用2的k次方 这样算 其实完全不用 用如下代码 就可-------我们假设以 字符串来接受这个二进制 一般我们也都是这样做的 1 for( int i = 0 ; str[i]!='\0' ; i++ ) 2 { 3 sum = sum*2 + str[i] - '0'; 4 } 我们通过这个*2也达到了 k次方这个效果 因为i =0恰恰是 二进制的最高位 同样 当我任意给你一个十进制数字  234

C#中 byte[] Image Bitmap之间的相互转化

/// <summary>         /// 将图片Image转换成Byte[]         /// </summary>         /// <param name="Image">image对象</param> /// <param name="imageFormat">后缀名</param> /// <returns></returns> public

java 中 “文件” 和 “流” 的简单分析

java 中 FIle 和 流的简单分析 File类 简单File 常用方法 创建一个File 对象,检验文件是否存在,若不存在就创建,然后对File的类的这部分操作进行演示,如文件的名称.大小等 //创建一个File 对象,检验文件是否存在,若不存在就创建然后对File package wfu; import java.io.File; import java.io.IOException; import java.util.Date; import java.util.Scanner; pu

(原)关于MEPG-2中的TS流数据格式学习

关于MEPG-2中的TS流数据格式学习 Author:lihaiping1603 原创:http://www.cnblogs.com/lihaiping/p/8572997.html 本文主要记录了,结合网上两篇博客 1) https://www.maizhiying.me/posts/2017/07/12/demux-ts.html 2) https://my.oschina.net/u/727148/blog/666824 ,mepg-2(13818)文档以及使用ffmpeg将mp4文件转码

整理 JAVA中的IO流 (字符流和字节流两个大类)

java中的io流分为两类,字符和字节: OutputStream和InputStream字节流的父类,抽象.OutputStream有两个提供了实现的接口closable和flushable. Writer和Reader字符流的父类,抽象.实际上在流的操作中,底层与文件进行读写的都是字节流,因为即使是字符流的对象,其最终实现读写的也是用的字节流. 操作文件的字节子类FileOutputStream和FileInputStream.记住,这里面写出和读入的都是字节. class useByteS