この記事では、バイト配列を文字列に変換する方法を学びます。これを達成するために利用できる方法はたくさんあります。これらの方法の中で一般的な方法の 1 つは、System 名前空間内に存在する BitConverter クラスを使用することです。このトピックでは、バイトから文字列への C# について学習します。
BitConverter.ToString() メソッドとそのすべてのオーバーロードされた形式を使用すると、byte[] を文字列に簡単に変換できます。このメソッドは基本的に、byte[] の要素にすぎない数値を、同等の 16 進形式の文字列に変換します。オーバーロードされたフォームは次のとおりです:
次に、BitConverter.ToString() メソッドを使用して byte[] を文字列に変換する構文を示します。
public static string ToString(byte[] byteArray);
上記のメソッドは、バイト配列を入力として受け取り、いくつかの 16 進数のペアを含む文字列を返します。これらの各ペアはハイフンで区切られ、byteArray 内の対応する要素を表します。
public static string ToString(byte[] byteArray, int startingIndex);
ここで、ToString() メソッドは 2 つの引数を取ります。 byteArray は文字列に変換するバイト配列、startingIndex は変換を開始するバイト配列の要素のインデックスです。
public static string ToString(byte[] byteArray, int startingIndex, int length);
ここで、ToString() メソッドは 3 つの引数を取ります。 byteArray は文字列に変換するバイトの配列、startingIndex は変換を実行するバイト配列の要素のインデックス、length は startingIndex から開始して変換するバイト配列の要素の数です。
前に説明したように、C# ではバイト配列を文字列に変換する方法がたくさんあります。一般的な方法の 1 つは、BitConverter.ToString() メソッドを使用することです。 C# の System 名前空間の BitConverter クラスには、バイト配列を基本データ型に変換するメソッドがいくつか含まれているため、このクラスの ToString() メソッドを使用して byte[] を文字列に変換できます。このメソッドには次の 3 つのオーバーロード形式があります:
ToString(byte[]);
このメソッドは、バイト配列全体の各要素の数値を文字列に変換するために使用されます。結果の文字列には、ハイフンで区切られた 16 進数のペアが含まれ、各ペアは対応するバイト配列要素を表します。
ToString(byte[], Int32);
このメソッドは、バイトの部分配列の各要素の数値を、同等の 16 進文字列のペアに変換します。このメソッドの整数引数は、サブ配列の開始インデックスを指定します。
ToString(byte[], Int32, Int32);
このメソッドは、バイト配列の一部またはすべての要素の数値を 16 進文字列ペアに変換します。変換する要素は、このメソッドの 2 番目と 3 番目の引数を使用して指定します。 2 番目の引数は、変換を開始する必要がある開始インデックスを指定し、3 番目の引数は、取得する要素の長さ、つまり、前に指定した開始インデックスから開始して、変換のために取得する要素の数を指定します。 🎜>
これとは別に、System 内に存在する Encoding クラスを使用できます。バイト配列を UTF-8 または ASCII 文字セットおよびエンコーディングを使用した文字列に変換するテキスト名前空間。このクラスによって提供される GetString() メソッドは、バイト配列に存在するバイトを文字列にデコードするために使用されます。
この変換を実現するもう 1 つの方法は、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(); } }上記のステートメントの「バイト」は、文字列に変換するバイトの配列です。そこで、まず、バイト配列を「memoryStream」オブジェクト内のバイトのストリームとして取得しました。次に、StreamReader クラスを使用してこのストリームを読み取り、ReadToEnd() メソッドを使用してストリームを文字列として返します。このメソッドは、ストリームを読み取って文字列値を返します。
バイトから文字列への C# の例
例 #1
コード:
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(); } }
出力:
例 #2
コード:
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 クラスによって提供される結果の文字列には、16 進数のペアが含まれます。 Encoding クラスを使用すると、同じエンコード スキームを使用して、文字列を byte[] に変換し、byte[] を文字列に変換できます。
以上がバイトから文字列へ C#の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。