排他的論理和の結果を16進数に

解決


ルーシェ  2005-06-08 18:21:13  No: 122355

VB初心者です。
以下のような命令を作成したんですが。。。
   Dim za(0) As Byte
   Dim zb(0) As String

   za(0) = a(0) Xor b(0) Xor c(0) Xor d(0) Xor _
         dt.R(0) Xor dt.D(0) Xor dt.D(0) Xor _
         a1(0) Xor a2(0) Xor a3(0) Xor a4(0) Xor a5(0) _
         Xor b1(0) Xor b2(0) Xor b3(0) Xor b4(0) Xor b5(0)

   zb(0) = Hex(za(0))

   Dim ch1(0), ch2(0), ch3(0) As String

   ch1(0) = zb(0).Chars(0) : ch1(0) = Asc(ch1(0))
   ch2(0) = zb(0).Chars(1) : ch2(0) = Asc(ch2(0))

   ch1(0) = Hex(ch1(0))
   ch2(0) = Hex(ch2(0))

   Dim ch10(0), ch11(0) As Byte

   ch10(0) = ch1(0)
   ch11(0) = ch2(0)

このCH10とCh11の結果をMSCOMMで送信したのですが
通信先からエラーが返ってきます。。。
ここでいうch10,11は16進数になっているとは思うのですが。。。
長々と書きまして申し訳ないんですが、助言お願いします


通りすがり。  2005-06-08 18:34:00  No: 122356

送信するときののch10(0)、ch11(0)の中身を確認してみてください。


ルーシェ  2005-06-08 18:37:04  No: 122357

書き忘れました。。。
CH10(0)とch11(0)の中身をテキストBOXに出力しています。
そのデータは16進数です・・・


通りすがり。  2005-06-08 18:41:29  No: 122358

ちょっと不親切すぎますね。
送信したいデータはbyteですよね?
こういった場合は16進も10進も関係ないです。
あくまでも表記が違うだけなので。
Hex関数は16進数にした場合の文字列を返します。
16進を返してるわけではないです。
0xFF=255
ですが
0xFF=Hex(255)
にはなりません。
文字列のFFと255は一緒じゃないですよ。
FFを送りたい場合は&HFFを送るか255を送るが正解です。
dim buf(0) as byte
buf(0)=&HFF
もしくは
buf(0)=255

Mscomm1.output=buf
になります。


通りすがり。  2005-06-08 18:43:20  No: 122359

ch10(0)=Cbyte("&H" & ch1(0))
で送信ですね。


ルーシェ  2005-06-08 18:44:55  No: 122360

通りすがりさん。どうも助言ありがとうございましたm(_ _)m
一応今確認していたら自己解決しました。

テキストBOXに出していたんですが、16進数と思っていたのが10進数で
勘違いをしていました。。。

ということで正常に送信できました〜><


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加