位元組到字串 C#

王林
發布: 2024-09-03 15:21:41
原創
693 人瀏覽過

在本文中,我們將學習將位元組數組轉換為字串。有很多方法可以幫助我們實現這一目標。這些方法中的常見方法是使用 System 命名空間中存在的 BitConverter 類別。在本主題中,我們將學習 C# 位元組到字串。

BitConverter.ToString() 方法及其所有重載形式可以輕鬆將 byte[] 轉換為字串。此方法基本上將數字值(只不過是 byte[] 的元素)轉換為其等效的十六進位形式的字串。重載的形式如下:

  • ToString(Byte[]);
  • ToString(Byte[], Int32);
  • ToString(Byte[], Int32, Int32);

語法與解釋

以下是使用 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# 中將位元組轉換為字串?

如前所述,在 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() 方法用於將位元組數組中存在的位元組解碼為字串。

  • UTF8.GetString(byte[]);
  • ASCII.GetString(byte[]);

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() 方法將流作為字串傳回,該方法讀取流並傳回字串值。

C# 位元組到字串的範例

下面提到了不同的例子:

範例#1

使用 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();
}
}
登入後複製

輸出:

位元組到字串 C#

範例#2

使用 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#

結論

在 C# 中,我們可以使用 BitConverter、Encoding、MemoryStream 等類別將位元組陣列轉換為字串。 BitConverter 類別提供的結果字串包括十六進位對。使用 Encoding 類,我們可以使用相同的編碼方案將字串轉換為 byte[] 以及將 byte[] 轉換為字串。

以上是位元組到字串 C#的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!