問題引出: string轉換為byte(十六進制)
1 static void Main(string[] args) 2 { 3 string str = "05143124"; 4 byte[] b = Encoding.Default.GetBytes(str); 5 for (int i = 0; i < b.Length; i++) 6 { 7 Console.WriteLine(b[i]); 8 } 9 Console.ReadKey(); 10 }
運行結果:

問題來了,為什么轉化的結果是這個呢?48、53...是表示十進制還是十六進制呢?為什么不是0x00,0x05....或者是其他的....於是在網上搜查......
ASCII引出,在計算機,所有的數據在存儲和運算都要使用二進制數表示(因為計算機用高電平和低電平分別表示1和0),例如,像a、b、c、d這樣的52個字母(包括大寫)、以及0、1等數字還有一些常用的符號(例如*、#、@等)在計算機中存儲時也要使用二進制數來表示,而具體用哪些二進制數字表示哪個符號,當然每個人都可以約定自己的一套(這就叫編碼),而大家如果要想互相通信而不造成混亂,那么大家就必須使用相同的編碼規則,於是美國有關的標准化組織就出台了ASCII編碼,統一規定了上述常用符號用哪些二進制數來表示。

通過表可以看出,字符串轉化為字節數組,是將每個字符轉化為對應的ASCII碼,在C#中(VS 2013)打印字符串都是打印的十進制,若想打印出十六進制的需對代碼作微小變得。
1 static void Main(string[] args) 2 { 3 string str = "05143124"; 4 byte[] b = Encoding.Default.GetBytes(str); 5 6 for (int i = 0; i < b.Length; i++) 7 { 8 Console.WriteLine(b[i].ToString("x2")); 9 } 10 Console.ReadKey(); 11 }
運行結果:

ToString("x2") 為C#中的字符串格式控制符
x表示 十六進制
2表示 每次都是兩位數
這個結果輸出的就是16進制的字符。
