プロが教える店舗&オフィスのセキュリティ対策術

この度はお世話になります。

現在、バイナリ―ファイル(xxxx.bin)をVBAで読み込み、バイナリ―データを文字列化して、エクセルで解析できるようなシートを作っています。

バイナリ―ファイルの中身が31 39 32 31 ・・・・・となっていたら、31393231・・・と文字列化にしたいです。
そこで、自分でプログラムを考えてみたのですが、バイナリ―が 01 などの場合、など“1”として読み込まれて、“0”が入らず、ずれてしまいます。

Sub 電文解析プログラム()

Dim Deciphering_file As Variant '読み込みファイル
Dim buf As Byte '1バイト格納
Dim fLen As Long 'ファイルサイズ
Dim TEMP(1) As String '
Dim S_JIS As String '文字コード(2バイト)
Dim str As String '文字列データ
Dim i As Long

Deciphering_file = Application.GetOpenFilename("BINファイル(*.bin),*.bin")

fLen = FileLen(Deciphering_file)

Open Deciphering_file For Binary As #1

For i = 1 To fLen
Get #1, i, buf
S_JIS = Hex(buf)

If buf = 0 Then
S_JIS = "00"
End If

TEMP(0) = Mid(S_JIS, 1, 1)
TEMP(1) = Mid(S_JIS, 2, 1)

str = myChr & TEMP(0) & TEMP(1)
Next i
End Sub


ホントは3行くらいで済みそうな気がするんですが、あまりプログラミングをやったことありません。なので、すみませんがご教授お願いいたします。

A 回答 (1件)

「"0" & Hex(buf)」でできる文字列の右側2文字を取ればOKです。



S_JIS = Right("0" & Hex(buf), 2)


"0" & Hex(255) → "0FF"
右側2文字を取ると"FF"

"0" & Hex(5) → "05"
右側2文字を取ると"05"
    • good
    • 0
この回答へのお礼

Picosoft様

ご回答、ご教授ありがとうございます!

回答より、解決いたしました!ありがとうございました。

Right関数も知らなかったので、勉強になりました。

また、なにかあったときはよろしくお願いします。

お礼日時:2014/01/08 12:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています