バイト型配列に入れた16進を10進に変換
バイト型に入れた最大FFの値を255として取り出すのは簡単ですが。
例:
Dim tmp As Long
tmp=&HFF
MsgBox tmp ‘255を表示
複数の配列にまたがった16進を10進に変換する場合についてのメモ。
バイト型配列にFFFとか代入した場合、1つの変数にはFFが最大ですから、
2つの変数に分けて、F,FFと代入されます。
これを、F=15,FF=255と取り出すのではなく、FFF=4095と1つの数字で見る方法。
一度、文字列にして結合してしまえば簡単です。
Dim str(3) As Byte
Dim a As Double
Dim tmp As String
‘FFFを右寄せで代入
str(0) = 0
str(1) = 0
str(2) = 15 ‘&H0F
str(3) = 255 ‘&HFF
tmp = Hex(str(0)) & Hex(str(1)) & Hex(str(2)) & Hex(str(3))
a = Val(”&H” + tmp)
‘a=4095
MsgBox a
TCP通信でバイナリ送信
Dim m as New MemoryBlock(4)
m.byte(0)=Val(”&h54″)
m.byte(1)=Asc(”R”)
m.byte(2)=84
m.byte(3)=80
MainSocket.Write(str(m))
“TRTP”を送信している。
バイト配列が無いなーと思ったら、MemoryBlockクラスがあるのね。
文字列とバイナリを送りたいのだが、うまくまとめて書けないものだろうか。
実際に送るデータは16進で、
「54 52 54 50 48 4F 54 4C 00 01 00 02」と、
最後の00 01 00 02が文字列ではなくなってしまう。
(それ以前はTRTPHOTL)
うーむ・・・・
メモ:
msgbox “Socket Error: ” + str(MainSocket.LastErrorCode)
msgbox MainSocket.read(MainSocket.BytesAvailable)
追記:
あ、
MainSocket.Write(”TRTP” + str(m))
いけるな(笑。