C#位元組陣列byte[]和字串string如何互相轉換

陽光下綠茵場發表於2020-09-26

在C#語法中,字串使用的是string型別,位元組陣列使用的是byte[],那麼,這兩者能不能互相轉換,以及如何轉換呢?

方法/步驟

  1. 開啟visual studio,建立一個控制檯應用程式,用於演示如何進行位元組陣列byte[]和字串string的相互轉換

    C#位元組陣列byte[]和字串string如何互相轉換?

  2. 在控制檯應用程式的Main方法中,定義一個字串string str = "這是字串變數";

    C#位元組陣列byte[]和字串string如何互相轉換?

  3. 將字串轉換為位元組陣列,需要指定想要轉成位元組的字符集,因為,不同的字符集佔用的位元組數是不一樣的。首先使用UTF-8的字符集,將字串轉換為位元組陣列。byte[] utf8 = Encoding.UTF8.GetBytes(str);

    C#位元組陣列byte[]和字串string如何互相轉換?

  4. 接著,使用GB2312字符集,將同一個字串轉換為位元組陣列,使用程式碼:byte[] gb2312 = Encoding.GetEncoding("GB2312").GetBytes(str);

    C#位元組陣列byte[]和字串string如何互相轉換?

  5. 在控制檯中,輸出這兩種字符集轉換出的位元組個數,看看是否相等呢?從執行結果可以看出,兩種字符集轉換出來的長度是不相等的。因為str目前的長度是7個字元,使用UTF-8轉換出來的位元組陣列長度=7*3=21,使用GB2312轉換出來的長度=7*2=14

    C#位元組陣列byte[]和字串string如何互相轉換?

  6. 那麼,位元組陣列如何才能轉換為字串呢?這個時候同樣需要指定字符集型別。Encoding.UTF8.GetString(utf8), Encoding.GetEncoding("GB2312").GetString(gb2312)

    C#位元組陣列byte[]和字串string如何互相轉換?

  7. 在visual studio中按F5除錯模式執行,就可以看到效果,上面從字串轉為位元組陣列後,再從位元組陣列重新轉回來的字串是一樣的

    C#位元組陣列byte[]和字串string如何互相轉換?

相關文章