c#中char、string轉換為十六進制byte的淺析


問題引出: 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進制的字符。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM