C# 字符串与字节数组相互转换

总结归纳:如果直接从System.String类中找到方法进行字符串和字节数组之间的转换,是不太可能的。为了使其之间进行转换,需要借助另外一个类型:System.Text.Encoding。这个类型提供了将C#字符串转换成字节数组的方法,也提供了将C# 字节数组转换成字符串。

System.Text.Encoding类型的默认构造函数不太可用,不过该类型提供了几种默认的静态属性。如下:

 1   //
 2         // 摘要:
 3         //     获取 ASCII(7 位)字符集的编码。
 4         //
 5         // 返回结果:
 6         //     ASCII(7 位)字符集的编码。
 7         public static Encoding ASCII { get; }
 8         //
 9         // 摘要:
10         //     获取使用 Big Endian 字节顺序的 UTF-16 格式的编码。
11         //
12         // 返回结果:
13         //     获取使用 Big Endian 字节顺序的 UTF-16 格式的编码对象。
14         public static Encoding BigEndianUnicode { get; }
15         //
16         // 摘要:
17         //     获取操作系统的当前 ANSI 代码页的编码。
18         //
19         // 返回结果:
20         //     操作系统的当前 ANSI 代码页的编码。
21         public static Encoding Default { get; }
22         //
23         // 摘要:
24         //     获取使用 Little-Endian 字节顺序的 UTF-16 格式的编码。
25         //
26         // 返回结果:
27         //     使用 Little-Endian 字节顺序的 UTF-16 格式的编码。
28         public static Encoding Unicode { get; }
29         //
30         // 摘要:
31         //     获取使用 Little-Endian 字节顺序的 UTF-32 格式的编码。
32         //
33         // 返回结果:
34         //     使用 Little-Endian 字节顺序的 UTF-32 格式的编码对象。
35         public static Encoding UTF32 { get; }
36         //
37         // 摘要:
38         //     获取 UTF-7 格式的编码。
39         //
40         // 返回结果:
41         //     UTF-7 格式的编码。
42         public static Encoding UTF7 { get; }
43         //
44         // 摘要:
45         //     获取 UTF-8 格式的编码。
46         //
47         // 返回结果:
48         //     UTF-8 格式的编码。
49         public static Encoding UTF8 { get; }

System.Text.Encoding

一、字符串转换成字节数组

 1  //System.Text.Encoding.GetBytes(String str)
 2             //1. 字符串转换字节数组
 3
 4             string str1 = "character string1";
 5             var strToBytes1 = System.Text.Encoding.UTF8.GetBytes(str1);
 6
 7             string str2 = "character string2";
 8             var strToBytes2 = System.Text.Encoding.Default.GetBytes(str2);
 9
10             string str3 = "character string3";
11             var strToBytes3 = System.Text.Encoding.Unicode.GetBytes(str3);
12
13             string str4 = "character string4";
14             var strToBytes4 = System.Text.Encoding.ASCII.GetBytes(str4);
15
16             string str5 = "character string5";
17             var strToBytes5 = System.Text.Encoding.UTF32.GetBytes(str5);
18
19             string str6 = "character string6";
20             var strToBytes6 = System.Text.Encoding.UTF7.GetBytes(str6);

System.Text.Encoding.GetBytes(String str)

二、字节数组转换成字符串

 1  //2. 字节数组转换成字符串
 2
 3             Console.Write("strToBytes1 使用UTF8编码转换成字符串:");
 4             var byteToString1 = System.Text.Encoding.UTF8.GetString(strToBytes1);
 5             Console.WriteLine(byteToString1);
 6             Console.Write("strToBytes1 使用Default编码转换成字符串:");
 7             var byteToString2 = System.Text.Encoding.Default.GetString(strToBytes2);
 8             Console.WriteLine(byteToString2);
 9             Console.Write("strToBytes1 使用Unicode编码转换成字符串:");
10             var byteToString3 = System.Text.Encoding.Unicode.GetString(strToBytes3);
11             Console.WriteLine(byteToString3);
12             Console.Write("strToBytes1 使用ASCII编码转换成字符串:");
13             var byteToString4 = System.Text.Encoding.ASCII.GetString(strToBytes4);
14             Console.WriteLine(byteToString4);
15             Console.Write("strToBytes1 使用UTF32编码转换成字符串:");
16             var byteToString5 = System.Text.Encoding.UTF32.GetString(strToBytes5);
17             Console.WriteLine(byteToString5);
18             Console.Write("strToBytes1 使用UTF7编码转换成字符串:");
19             var byteToString6 = System.Text.Encoding.UTF7.GetString(strToBytes6);
20             Console.WriteLine(byteToString6);

System.Text.Encoding.GetString(byte[] byte)

三、 字符串转换成流

1   //System.IO.MemoryStream
2             //3. 字符串转换成流
3             System.IO.MemoryStream ms1 = new System.IO.MemoryStream(strToBytes2);
4             System.IO.MemoryStream ms2 = new System.IO.MemoryStream(Convert.FromBase64String(str1));

System.IO.MemoryStream

四、流转换成字符串

1   //System.IO.MemoryStream
2             //4. 流转换成字符串
3             var memoryToString1 = System.Text.Encoding.Default.GetString(ms2.ToArray());
4             var memoryToString2 = Convert.ToBase64String(ms2.ToArray());

System.IO.MemoryStream

五、字节数组转换成流

1   //5. 字节数组转换成流
2             System.IO.MemoryStream ms3 = new System.IO.MemoryStream(strToBytes1);
3
4             System.IO.MemoryStream ms4 = new System.IO.MemoryStream(); ms4.Read(strToBytes1, 0, strToBytes1.Length);

字节数组转换成流

六、流转换成字节数组

1 //6. 流转换成字节数组
2
3 byte[] bt = ms3.ToArray();
4
5 System.IO.MemoryStream ms = new System.IO.MemoryStream();
6 ms.Write(bt, 0, (int)ms4.Length);

流转换成字节数组

时间: 2024-10-13 21:47:53

C# 字符串与字节数组相互转换的相关文章

C# 16进制与字符串、字节数组之间的转换

1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2)); //十进制转八进制 Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8)); //十进制转十六进制 Console.WriteLine("十进制166的十六进制表示: "+Con

C# 16进制与字符串、字节数组之间的转换(转)

1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串   //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2)); //十进制转八进制 Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8)); //十进制转十六进制 Console.WriteLine("十进制166的十六进制表示: "+C

【java解惑】字符串的字节数组构造函数使用

如下代码: public class Example018 { public static void main(String[] args) { byte bs[] = new byte[256]; for (int i = 0; i < 256; i++) { bs[i] = (byte) i; } string(bs);// 调用1 string(bs, "iso-8859-1");// 调用2 string(bs, "gbk");// 调用3 strin

java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等

原文:java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等 源代码下载:http://www.zuidaima.com/share/1550463397366784.htm ava 常用流处理工具 StreamTool ,常见的InputStream 流转字符串, 转字节数组等等 **应用场景: ** 1. 文件上传 2. js / css / img 等文件读取输出. 转字符串输出 (js & css) , 转字节数组输出 (img .. swf

C#串口通讯,16进制与字符串、字节数组之间的转换。

1.将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2));//十进制转八进制Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8));//十进制转十六进制Console.WriteLine("十进制166的十六进制表示: "+Convert.ToStrin

打印机打印字符串转字节数组截取半个中文导致的乱码问题

打印机打印的时候  要求:打印一行文字,但这行文字实际长度 len(单位是:px)是固定的 这时候我们的思路是  :GBK编码下汉字占用两个字节,而且这两个字节都是负数,char型字符占用一个字节, 每个汉字占用的宽度是24px   每个char型占用的宽度是12px    换言之每个字节占用的打印宽度是12px 本行所容纳的字节个数 num=len / 12: 这时候我们将字符串转为字节数组  截取num个字节放到字节数组,然后转为字符串就是该行打印的字符串 但是有个问题就是 当我们截取的最后

基础数据类型与字节数组相互转换 BitConvter类

BitConveter类 总结:这是非常实用的一个类,当需要对字节数组操作时,它提供了很多有效的方法. 1.方法 GetBytes(Int32)//以字节数组的形式返回指定的 32 位有符号整数值. ToString(Byte[])//将指定的字节数组的每个元素的数值转换为它的等效十六进制字符串表示形式. ToSingle//返回由字节数组中指定位置的四个字节转换来的单精度浮点数 ToInt32//返回由字节数组中指定位置的四个字节转换来的 32 位有符号整数. 2.实例 代码: using S

字符串、字节数组、流之间的相互转换以及文件MD5的计算

1 using System; 2 using System.IO; 3 using System.Security.Cryptography; 4 using System.Text; 5 6 namespace myMethod 7 { 8 class lgs 9 { 10 static void Main() 11 { 12 Console.ReadKey(); 13 } 14 15 /// <summary> 16 /// 使用不同的编码格式将 字符串 → 字节数组 17 /// &l

getBytes()---&gt;字符串转字节数组

是String的一个方法String的getBytes()方法是得到一个系统默认的编码格式的字节数组getBytes("utf-8") 得到一个UTF-8格式的字节数组把String转换成bytes,各种编码转换成的bytes不同,比如UTF-8每个汉字转成3bytes,而GBK转成2bytes,所以要说明编码方式,否则用缺省编码.