バイト型配列 (バイナリ) からString(文字列)に変換する

Visual Basicでバイト型配列から℠tring型に変換するコードを紹介します。

概要

バイト型配列から文字列(String)型に変換する場合、多くの場合ではバイト型の配列にはShift JISの文字コードで文字列データが格納されています。

Visual Basic(.NET Framework)ではString型の文字列はunicodeで扱われるため、単純にバイト配列のデータをString型にコピーしても文字コードが違うため同じ文字列として扱えません。

バイト型配列からString型に変換するためには、文字コードの変換も含めて変換処理をする必要があります。Visual Basicでは System.Text.EncodingクラスのGetStringメソッドを利用することで、文字コードのエンコードを含めてバイト型配列から文字列型への変換ができます。

書式

バイト型配列からString型に変換するには EncodingオブジェクトのGetString()メソッドを利用します。

(Encodingオブジェクト).GetString((byte配列の入力値))

プログラム例

UI

Windows Formアプリケーションを作成し、下図のUIを作成します。TextBox2つ、Buttonを1つフォームに配置します。

バイト型配列 (バイナリ) からString(文字列)に変換する:画像1

コード

下記のコードを記述します。配置したボタンのクリックイベントを実装します。

Imports System.Text

Public Class FormArrayToString
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim inputstr As String
        inputstr = TextBox1.Text
        Dim bytestr() As String
        bytestr = inputstr.Split(",")

        Dim bytedata(bytestr.Length) As Byte
        For i = 0 To bytestr.Length - 1
            bytedata(i) = Convert.ToByte(bytestr(i), 16)
        Next

        Dim resultstr As String
        resultstr = Encoding.GetEncoding("shift_jis").GetString(bytedata)
        TextBox2.Text = resultstr
    End Sub
End Class

解説

下記のコードで、TextBox1に入力された文字列をinputstr変数に代入します。代入後 "," で区切り文字列の配列に代入します。その後文字列の配列の要素を16進表記として数値に変換します。変換した値をbytedata配列 (バイト型の配列)に代入します。

下記の文字列が入力された場合、

A3,B2,C1

bytestr の値は下記になります。

bytestr(0) = "A3"
bytestr(1) = "B2"
bytestr(2) = "C1"


bytedata の値は下記になります。

bytedata(0) = A3
bytedata(1) = B2
bytedata(2) = C1


作成したバイト配列 bytedata を文字列に変換します。

GetEncoding()メソッドを呼び出し、エンコーディングオブジェクトを取得します。今回は"shift_jis"を与えることでSJISのエンコーディングオブジェクトを取得しています。取得したエンコーディングオブジェクトのGetString()メソッドを呼び出し、文字列に変換します。GetString()メソッドの第一引数に変換元のバイト配列を与えます。変換結果はメソッドの戻り値として返ります。

    Dim resultstr As String
    resultstr = Encoding.GetEncoding("shift_jis").GetString(bytedata)


変換した文字列をTextBox2に表示します。

    TextBox2.Text = resultstr

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。
バイト型配列 (バイナリ) からString(文字列)に変換する:画像2

上部のテキストボックス(TextBox1)に文字列を入力します。今回は42,65,61,72,82,CD,83,4E,83,7D,82,B3,82,F1 の文字列を入力します。
バイト型配列 (バイナリ) からString(文字列)に変換する:画像3

[Button1]をクリックします。入力文字列をカンマで区切りバイト配列に変換したものを文字列に変換した結果が表示されます。
バイト型配列 (バイナリ) からString(文字列)に変換する:画像4

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2019-06-26
Copyright © 1995–2025 iPentec all rights reserverd.