こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

バイナリーデータを16進数に表示したい

バッファーにパックされたデータが入ってきます。
そのデータを1バイトずつHEXで表示したいのですが
VB.NETでプログラミングしているのですが苦戦しています。
H01,H10,H20...等はしたコーディングで表示できるのですが
HC5,HCA,E0等の上位4ビットが大きいと全て3Fとなって期待した表示ができません。
メモリーダンプして1バイト毎に16進数(0~F)で表示したいのと同様で、1バイトを変換しないでそのままHEX表示したいです。

下はうまく動かないサンプルです。開発言語はVB.NETです。
------------------------------------
InBuffer = _Rfid.ReadExisting()
hexData = ""
For i = 0 To Len(InBuffer) - 1
hexData = hexData & Hex(Asc(Mid(inData, i + 1, 1))).PadLeft(2, "0"c)
Next
-----------------------------
どなたか方法をご教示ください。
宜しくお願いします。

投稿日時 - 2009-12-25 19:23:13

QNo.5546989

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

SerialPortクラス使った事ないから自信ないけれども。

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.readexisting.aspx

戻り値はStringでいいのか?

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.encoding.aspx

Stringで正しいとしてEncodingは正しいのか?

System.Text.Encoding.GetEncodingメソッドの
EncoderFallbackやDecoderFallbackはちゃんとしているか?
===============

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.readbyte.aspx

http://msdn.microsoft.com/en-us/library/ms143549.aspx
もし、StringでなければReadByte()やRead(Byte[],Int32)メソッドだよね?

http://msdn.microsoft.com/en-us/library/system.bitconverter.getbytes.aspx
http://msdn.microsoft.com/en-us/library/system.bitconverter.tostring.aspx
ReadByte()を使うなら、BitConverterクラスのgetbytesメソッドから
ToStringメソッドでいけるかな。

投稿日時 - 2009-12-25 19:47:45

あなたにオススメの質問