C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】バイト配列を文字列に変換する方法をわかりやすく解説

.NETでは、すべての文字列に文字セットとエンコーディングが関連付けられています。文字エンコーディングとは、コンピュータに対して「0と1の生データをどのように実際の文字として解釈するか」を指示するためのルールです。一般的には数値と文字を対応付けることでこれを実現しており、端的に言えば「一連のUnicode文字をバイト列へ変換する処理」のことを指します。

Encoding.GetStringメソッドによる変換

指定したバイト配列内のすべてのバイトを文字列にデコードするには、Encoding.GetStringメソッド(Byte[])を使用します。Encodingクラスには、UTF8、Unicode、UTF32、ASCIIなど、さまざまなエンコード方式が用意されており、用途に応じて使い分けることが可能です。EncodingクラスはSystem.Text名前空間の一部として提供されています。

string result = Encoding.Default.GetString(byteArray);

サンプルコード

以下は、文字列をバイト配列に変換し、その後再び文字列へ復元する基本的な例です。

using System;
using System.Text;
namespace DemoApplication {
    public class Program {
        static void Main(string[] args) {
            byte[] byteArray = Encoding.Default.GetBytes("Hello World");
            Console.WriteLine($"Byte Array is: {string.Join(" ", byteArray)}");
            string str = Encoding.Default.GetString(byteArray);
            Console.WriteLine($"String is: {str}");
            Console.ReadLine();
        }
    }
}

実行結果

上記コードの出力結果は次のとおりです。

Byte Array is: 72 101 108 108 111 32 87 111 114 108 100
String is: Hello World

注意点:エンコード方式は必ず統一する

ここで重要なのは、エンコード時とデコード時で同じエンコード方式を使用しなければならないという点です。たとえば、バイト配列がASCIIでエンコードされているにもかかわらず、UTF32を使って文字列への復元を試みると、期待通りの文字列を取得できません。

誤った使用例

using System;
using System.Text;
namespace DemoApplication {
    public class Program {
        static void Main(string[] args) {
            byte[] byteArray = Encoding.ASCII.GetBytes("Hello World");
            Console.WriteLine($"Byte Array is: {string.Join(" ", byteArray)}");
            string str = Encoding.UTF32.GetString(byteArray);
            Console.WriteLine($"String is: {str}");
            Console.ReadLine();
        }
    }
}

実行結果

上記コードを実行すると、文字列が正しく復元されていないことが確認できます。

Byte Array is: 72 101 108 108 111 32 87 111 114 108 100
String is: ???

このように、異なるエンコード方式を混在させると文字化けやデータ破損の原因となります。バイト配列と文字列の相互変換を行う際は、必ず対応するエンコード方式を揃えるようにしましょう。

  1. JavaScriptで文字列を文字配列に変換する方法をわかりやすく解説

    JavaScriptで文字列を文字配列として扱いたい場面は多くあります。本記事では、substring()メソッドを使って文字列を1文字ずつ取り出し、文字配列のように処理する基本的な方法を解説します。 substring()メソッドを使った変換方法 substring()は、文字列の中から指定した範囲の部分文字列を抽出できるJavaScriptの標準メソッドです。開始位置iから終了位置i + 1までを指定することで、文字列を先頭から順番に1文字ずつ取得できます。 サンプルコード 以下のコードを実行すると、文字列「Amit」が1文字ずつアラートで表示され、文字配列のように扱えていることが

  2. AndroidでJavaのBitmapをバイト配列(byte[])に変換する方法【サンプルコード付き】

    このチュートリアルでは、Androidアプリ開発において、JavaのBitmap(ビットマップ)画像をバイト配列(byte[])へ変換する方法を、ステップごとに詳しく解説します。画像の圧縮・保存やネットワーク送信など、さまざまな場面で役立つ基本テクニックです。ステップ1:新規プロジェクトを作成するまずはAndroid Studioを起動し、メニューから「File」→「New Project」を選択しましょう。必要な項目をすべて入力して、新しいプロジェクトを作成します。ステップ2:レイアウトファイル(activity_main.xml)を編集するres/layout/activity_main.