今回はバイト型配列をそのまま文字列に変換する方法を解説します。
バイト型配列をUnicode文字列に変換する方法はSystem.Text.Encoding.Unicode.GetString
をすれば変換できますが、バイト型配列(0xFF, 0x1Aとか)をそのまま文字列として出力したい場合が出てくることがあります。
目次
スポンサーリンク
バイト型配列をそのまま文字列変換するにはBitConverter.ToStringメソッドを使う
BitConverter.ToString
メソッドを使った例を挙げます。
サンプルコード
using System;
using System.Text;
namespace ByteArrayToString
{
class Program
{
static void Main(string[] args)
{
byte[] array = { 0xFF, 0x1A, 0x30, 0x00 };
Console.WriteLine(BitConverter.ToString(array));
}
}
}
実行結果
FF-1A-30-00
ハイフン-
区切りで16進数の値が出力されることが確認できました。
0x
部分までは出力されません。
BitConverter.ToStringメソッドの逆
今度は逆に出力されたバイト型配列の文字列を16進数のバイト型配列に戻してみます。
カンマ-
区切りの文字列をString.Stlit
メソッドで文字列の配列にして、配列内の文字列を個別にConvert.ToByte
メソッドでバイト型に変換します。
サンプルコード
using System;
using System.Text;
namespace ByteArrayToString
{
class Program
{
static void Main(string[] args)
{
byte[] array = { 0xFF, 0x1A, 0x30, 0x00 };
var arrayStr = BitConverter.ToString(array);
Console.WriteLine(arrayStr);
// バイト型配列をハイフン(-)で文字列の配列に変換
string[] arrayStr2 = arrayStr.Split('-');
byte[] arrayOut = new byte[arrayStr2.Length];
for (int i = 0; i < arrayStr2.Length; i++)
{
// 16進数文字列に変換
arrayOut[i] = Convert.ToByte(arrayStr2[i], 16);
}
}
}
}
実行結果
デバッグ上ですがバイト型配列に戻っていることが確認できました。

コメント