源自C#與.NET程序員面試寶典。
如何在Byte[]和String之間進行轉換?
比特(b):比特只有0 1,1代表有脈沖,0代表無脈沖。它是計算機物理內存保存的最基本單元。
字節(B):8個比特,0—255的整數表示
編碼:字符必須編碼後才能被計算機處理。早期計算機使用7為AscII編碼,為了處理漢字設計了中文簡體GB2312和big5
字符串與字節數組之間的轉換,事實上是現實世界的信息和數字世界信息之間的轉換,勢必涉及到某種編碼方式,不同的編碼方式將導致不同的轉換結果。C#中常使用System.Text.Encoding來管理常用的編碼。下面直接上代碼:
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace ByteToString
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 string str = "鞠哥真帥!";
14
15 //使用UTF編碼。。。
16 Byte[] utf8 = StrToByte(str, Encoding.UTF8);
17 //估計C#當時設計時沒有中文簡體,這是後來中國搞的?
18 Byte[] gb2312 = StrToByte(str,Encoding.GetEncoding("GB2312"));
19
20 Console.WriteLine("這是UTF8(鞠哥真帥),長度是:{0}",utf8.Length);
21 foreach (var item in utf8)
22 {
23 Console.Write(item);
24 }
25
26 Console.WriteLine("\n\n這是gb2312(鞠哥真帥),長度是:{0}",gb2312.Length);
27 foreach (var item in gb2312)
28 {
29 Console.Write(item);
30 }
31
32
33 //用utf8編碼的字節數組轉換為str
34 string utf8Str = ByteToStr(utf8,Encoding.UTF8);
35 string gb2312Str = ByteToStr(gb2312,Encoding.GetEncoding("GB2312"));
36
37 Console.WriteLine("\n\nutf8: {0}",utf8Str);
38 Console.WriteLine("gb2312: {0}",gb2312Str);
39 Console.ReadKey();
40
41 }
42
43
44 //C#通常使用System.Text.Encoding編碼
45
46 //字符串轉數組
47 static Byte[] StrToByte(string str, Encoding encoding)
48 {
49 return encoding.GetBytes(str);
50 }
51
52 //數組轉換字符串
53 static String ByteToStr(Byte[] bt,Encoding encoding)
54 {
55 return encoding.GetString(bt);
56 }
57
58 }
59 }