【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: ???
このように、異なるエンコード方式を混在させると文字化けやデータ破損の原因となります。バイト配列と文字列の相互変換を行う際は、必ず対応するエンコード方式を揃えるようにしましょう。
-
JavaScriptで文字列を文字配列に変換する方法をわかりやすく解説
JavaScriptで文字列を文字配列として扱いたい場面は多くあります。本記事では、substring()メソッドを使って文字列を1文字ずつ取り出し、文字配列のように処理する基本的な方法を解説します。 substring()メソッドを使った変換方法 substring()は、文字列の中から指定した範囲の部分文字列を抽出できるJavaScriptの標準メソッドです。開始位置iから終了位置i + 1までを指定することで、文字列を先頭から順番に1文字ずつ取得できます。 サンプルコード 以下のコードを実行すると、文字列「Amit」が1文字ずつアラートで表示され、文字配列のように扱えていることが
-
AndroidでJavaのBitmapをバイト配列(byte[])に変換する方法【サンプルコード付き】
このチュートリアルでは、Androidアプリ開発において、JavaのBitmap(ビットマップ)画像をバイト配列(byte[])へ変換する方法を、ステップごとに詳しく解説します。画像の圧縮・保存やネットワーク送信など、さまざまな場面で役立つ基本テクニックです。ステップ1:新規プロジェクトを作成するまずはAndroid Studioを起動し、メニューから「File」→「New Project」を選択しましょう。必要な項目をすべて入力して、新しいプロジェクトを作成します。ステップ2:レイアウトファイル(activity_main.xml)を編集するres/layout/activity_main.