文字列を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に変換するサンプルコードでした。