源自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 }