Visual BasicでString(文字列)型からバイト型配列 (バイナリ) に変換するコードを紹介します。
Visual Basicでは文字列はunicodeとして定義されているため、文字列をバイト型配列にコピーするためには、エンコードの指定(SJIS, JIS, EUC, UTF-8など)も必要になります。Visual Basicでは System.Text.Encodingクラスが用意されており、このクラスを用いて文字列をエンコードを指定して、バイト型配列に変換できます。
文字列(String)型からバイト型配列に変換する場合はGetBytes()メソッドを用います。
下図のUIを作成します。フォームにボタンとMultilineプロパティをtrueに設定した、複数行テキストボックスを配置します。
下記のコードを記述します。
Imports System.Text
Public Class FormStringToArray
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim textstr As String = "ぺんぎん XYZ"
Dim bytedata() As Byte = Encoding.GetEncoding("shift_jis").GetBytes(textstr)
For i = 0 To bytedata.Length - 1
TextBox1.Text += Convert.ToString(bytedata(i), 16) + " - "
Next
End Sub
End Class
textstr変数に入力文字列を代入します。今回の入力文字列は "ぺんぎん XYZ" とします。
Dim textstr As String = "ぺんぎん XYZ"
Encodingオブジェクトを取得します。今回はGetEncodingメソッドに "shift_jis" を指定し、Shift JIS のエンコーディングオブジェクトを取得します。取得したEncodingオブジェクトのGetBytes メソッドを呼び出し、引数に与えた String型の文字列をバイト配列に変換します。
Dim bytedata() As Byte = Encoding.GetEncoding("shift_jis").GetBytes(textstr)
バイト配列に変換した bytedata オブジェクトの要素をForループを利用して一つずつ取得し、16進数表記にした値をテキストボックスに表示します。
For i = 0 To bytedata.Length - 1
TextBox1.Text += Convert.ToString(bytedata(i), 16) + " - "
Next
上記のプロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。入力文字列の "ぺんぎん XYZ" をバイト配列に変換し、それぞれのバイトを16進数表記した値がテキストボックスに表示されます。