文字列をバイト配列に変換・バイト配列を文字列に変換する方法

文字列をByteの配列、逆のByte配列を文字列に変換したい場合は、
System.Text.Encoding.GetEncodingを使用します。
以下にSystem.Text.Encoding.GetEncodingのGetBytes,GetStringを使って
Byte配列からString、逆のStringからByte配列に変換するサンプルコードを紹介します。

参考サイト

StringをByte配列に変換する

以下に C#、Visual Basic(VB)を使ったサンプルコードを紹介します。
Visual Studio 2019のプログラムファイルはUTF-8 BOM付で保存されていたので、
GetEncodingの文字コードをutf-8にしました。
utf-8の部分を他の文字コードにすることができます。
ファイルなどから読み込んだ文字列をByte列に変換する場合は、utf-8の部分を
文字列にあった文字コードを設定してください。

文字コード設定値
シフトJIS932
または
Shift_JIS
UTF-8utf-8
JISコードiso-2022-jp
EUCeuc-jp

C# サンプルコード

以下にGetEncodingを使ったC#のサンプルコードになります。

fileProgram.cs
using System;

namespace GetEncCS
{
    class Program
    {
        static void Main(string[] args)
        {
            String str = "こんにちは!";

            //StringをByte配列に変換
            Byte[] b = System.Text.Encoding.GetEncoding("utf-8").GetBytes(str);

            //Byte配列をStringに変換
            String str2 = System.Text.Encoding.GetEncoding("utf-8").GetString(b);
        }
    }
}

Visual Basic サンプルコード

以下にGetEncodingを使ったVisual Basicのサンプルコードになります。

fileModule1.vb
Module Module1

    Sub Main()

        Dim str As String = "こんにちは!"

        'StringをByte配列に変換
        Dim b As Byte() = System.Text.Encoding.GetEncoding("utf-8").GetBytes(str)

        'Byte配列をStringに変換
        Dim str2 As String = System.Text.Encoding.GetEncoding("utf-8").GetString(b)

    End Sub

End Module

実行結果

以下の出力はCygwinのhexdumpコマンドを使ってサンプルコードで変換した「こんにちは!」の
文字コードをHEXで表示させたときの出力です。

$ echo こんにちは! | hexdump -C
00000000  e3 81 93 e3 82 93 e3 81  ab e3 81 a1 e3 81 af ef  |................|
00000010  bc 81 0a                                          |...|

以下、デバッガで止めて変数をウォッチした時のキャプチャになります。

以上、StringをByte配列へ変換とByte配列からStringに変換するサンプルコードでした。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS