在本文中,我們將學習將位元組數組轉換為字串。有很多方法可以幫助我們實現這一目標。這些方法中的常見方法是使用 System 命名空間中存在的 BitConverter 類別。在本主題中,我們將學習 C# 位元組到字串。
BitConverter.ToString() 方法及其所有重載形式可以輕鬆將 byte[] 轉換為字串。此方法基本上將數字值(只不過是 byte[] 的元素)轉換為其等效的十六進位形式的字串。重載的形式如下:
以下是使用 BitConverter.ToString() 方法將 byte[] 轉換為字串的語法:
public static string ToString(byte[] byteArray);
上面的方法接受一個位元組陣列作為輸入,並傳回一個包含一些十六進位對的字串。每對都由連字號分隔,代表 byteArray 中的對應元素。
public static string ToString(byte[] byteArray, int startingIndex);
這裡,ToString() 方法有兩個參數; byteArray 是要轉換為字串的位元組數組,startingIndex 是要開始轉換的位元組數組中元素的索引。
public static string ToString(byte[] byteArray, int startingIndex, int length);
這裡,ToString() 方法接受三個參數; byteArray 是要轉換為字串的位元組數組,startingIndex 是要執行轉換的位元組數組中元素的索引,length 是從startingIndex 開始要轉換的位元組數組數組元素的數量。
如前所述,在 C# 中將位元組數組轉換為字串的方法有很多種。常見的方法之一是使用 BitConverter.ToString() 方法。 C# 中 System 命名空間下的 BitConverter 類別包含多個將位元組陣列轉換為基本資料類型的方法,因此我們可以使用該類別的 ToString() 方法將 byte[] 轉換為字串。此方法有以下三種重載形式:
ToString(byte[]);
此方法用於將整個位元組數組的每個元素的數值轉換為字串,其中結果字串將包含十六進位對,每個對由連字符分隔,每對代表相應的位元組數組元素。
ToString(byte[], Int32);
此方法將位元組子數組中每個元素的數值轉換為其等效的十六進位字串對。此方法中的整數參數指定子數組的起始索引。
ToString(byte[], Int32, Int32);
此方法將位元組數組中部分或全部元素的數值轉換為其十六進位字串對。使用此方法的第二個和第三個參數指定要轉換的元素;第二個參數指定我們需要開始轉換的起始索引,第三個參數指定要取得的元素的長度,即要轉換的元素數量,從前面指定的起始索引開始。
除此之外,我們還可以使用 System.out.println() 中存在的 Encoding 類別。文字命名空間,用於將位元組數組轉換為具有 UTF-8 或 ASCII 字元集和編碼的字串。該類別提供的 GetString() 方法用於將位元組數組中存在的位元組解碼為字串。
Encoding類別提供的其他編碼方案包括Unicode、UTF32、UTF7等
實作此轉換的另一種方法是使用 Convert.ToBase64String() 方法,用於將位元組陣列中存在的位元組轉換為字串。
ToBase64String(byte[]); We can also use MemoryStream to convert byte array to string. But, first, we need to convert the byte array to the stream of bytes using MemoryStream class; then, we can read this entire stream using StreamReader class and then can return this stream as a string with the help of the ReadToEnd() method. Let us now understand this with the help of statements provided below:
using (MemoryStream memoryStream = new MemoryStream(bytes)) { using (StreamReader streamReader = new StreamReader(memoryStream)) { return streamReader.ReadToEnd(); } }
上述語句中的「bytes」是要轉換為字串的位元組數組。因此,首先,我們將位元組數組作為“memoryStream”物件中的位元組流。然後,我們使用 StreamReader 類別讀取該流,並使用 ReadToEnd() 方法將流作為字串傳回,該方法讀取流並傳回字串值。
下面提到了不同的例子:
使用 BitConverter 類別將位元組數組轉換為字串的範例。
代碼:
using System; using System.Globalization; using System.Text; using System.IO; public class Program { public static void Main() { string resultedStr = string.Empty; //defining byte array byte[] bytes = new byte[5] { 12, 24, 36, 48, 60 }; //printing byte array before conversion Console.Write("Byte array before conversion: "); for (int i = 0; i < bytes.Length; i++) { Console.Write(" " + bytes[i]); } //converting byte array to string resultedStr = BitConverter.ToString(bytes); //printing string after conversion Console.WriteLine("\nResulted string after conversion: {0}", resultedStr); Console.ReadLine(); } }
輸出:
使用 Encoding 類別和 MemoryStream 類別將位元組陣列轉換為字串的範例。
代碼:
using System; using System.Globalization; using System.Text; using System.IO; namespace ConsoleApp4 { public class Program { public static void Main() { string str = "The sun rises in the east"; //converting string to array of bytes byte[] bytes = Encoding.ASCII.GetBytes(str); //printing byte array before conversion Console.Write("Byte array before conversion: "); for (int i = 0; i < bytes.Length; i++) { Console.Write(" " + bytes[i]); } //converting byte array to string using Encoding class str = Encoding.ASCII.GetString(bytes); //printing resulted string after conversion Console.WriteLine("\n"); Console.Write("\nConversion using Encoding class: \n{0}", str); //converting byte array to string using MemoryStream class Console.WriteLine("\n"); Console.WriteLine("\nConversion using MemoryStream: "); using (MemoryStream memoryStream = new MemoryStream(bytes)) { using (StreamReader streamReader = new StreamReader(memoryStream)) { Console.Write(streamReader.ReadToEnd()); } } Console.ReadLine(); } } }
輸出:
在 C# 中,我們可以使用 BitConverter、Encoding、MemoryStream 等類別將位元組陣列轉換為字串。 BitConverter 類別提供的結果字串包括十六進位對。使用 Encoding 類,我們可以使用相同的編碼方案將字串轉換為 byte[] 以及將 byte[] 轉換為字串。
以上是位元組到字串 C#的詳細內容。更多資訊請關注PHP中文網其他相關文章!