【C#超入門】バイト型配列をそのまま文字列に変換する方法

C# バイト型配列をそのまま文字列に変換

今回はバイト型配列をそのまま文字列に変換する方法を解説します。

バイト型配列を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);       
            }
        }
    }
}

実行結果

デバッグ上ですがバイト型配列に戻っていることが確認できました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

都内の精密機器を作っている会社に勤務している14年目のエンジニアです。趣味は美味しいものを食べることとゴルフ。プログラムについて今まで学んだことをわかりやすく発信するサイトを目指しています。

コメント

コメントする

目次
閉じる