文字列をByteの配列、逆のByte配列を文字列に変換したい場合は、
System.Text.Encoding.GetEncodingを使用します。
以下にSystem.Text.Encoding.GetEncodingのGetBytes,GetStringを使って
Byte配列からString、逆のStringからByte配列に変換するサンプルコードを紹介します。
以下に C#、Visual Basic(VB)を使ったサンプルコードを紹介します。
Visual Studio 2019のプログラムファイルはUTF-8 BOM付で保存されていたので、
GetEncodingの文字コードをutf-8にしました。
utf-8の部分を他の文字コードにすることができます。
ファイルなどから読み込んだ文字列をByte列に変換する場合は、utf-8の部分を
文字列にあった文字コードを設定してください。
文字コード | 設定値 |
シフトJIS | 932 または Shift_JIS |
UTF-8 | utf-8 |
JISコード | iso-2022-jp |
EUC | euc-jp |
以下にGetEncodingを使ったC#のサンプルコードになります。
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); } } }
以下にGetEncodingを使ったVisual Basicのサンプルコードになります。
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に変換するサンプルコードでした。