C# – 通常の文字列とbyte型配列の相互変換

概要

  • 通常の文字列からbyte型配列への変換
  • byte型配列から通常の文字列への変換

実装例

using System;

namespace BinaryEditorBase
{
    public static class BinaryEditor
    {
        /// <summary>
        /// バイト列を通常の文字列に変換
        /// </summary>
        /// <param name="bytes">バイト列</param>
        /// <param name="encoding">エンコード</param>
        /// <returns>文字列</returns>
        public static string BytesToString(byte[] bytes, System.Text.Encoding encoding)
        {
            return encoding.GetString(bytes);
        }

        /// <summary>
        /// 通常の文字列をバイト列に変換
        /// </summary>
        /// <param name="normalString">文字列</param>
        /// <param name="encoding">エンコード</param>
        /// <returns>バイト列</returns>
        public static byte[] StringToBytes(string normalString, System.Text.Encoding encoding)
        {
            return encoding.GetBytes(normalString);
        }

        [STAThread]
        static void Main()
        {
            try
            {
                // 通常の文字列
                string normalData1A = "Maiu-";
                string normalData2A = "まいう~";
                // byte型配列へ変換
                byte[] bytesData1 = BinaryEditor.StringToBytes(normalData1A, System.Text.Encoding.UTF8);
                byte[] bytesData2 = BinaryEditor.StringToBytes(normalData2A, System.Text.Encoding.UTF8);
                // string型文字列へ変換
                string normalData1B = BinaryEditor.BytesToString(bytesData1, System.Text.Encoding.UTF8);
                string normalData2B = BinaryEditor.BytesToString(bytesData2, System.Text.Encoding.UTF8);
                // 表示
                Console.WriteLine(normalData1B);
                Console.WriteLine(normalData2B);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            // 終了処理
            Console.Write("何かキーを押してください");
            Console.Read();
        }
    }
}

説明

(11行目) 「System.Text.Encoding」クラスにある「GetString」メソッドを呼び出しているだけです。 文字コードについてはあらかじめ設定する必要があるので、それを引数としています。

(18行目) 11行目とほぼ同じで、「System.Text.Encoding」クラスにある「GetBytes」メソッドを呼び出しているだけです。 文字コードについても11行目と同じです。