• ベストアンサー

8桁文字列を16進数バイト配列に変換

お世話になります。 VB2005を使用しています。 温調器から温度データを引っ張るプログラムを作成しています。 8桁の文字列を16進数バイト配列に変換したいのですが、GetBytesでは10進数バイト配列に変換されてしまいます。 8桁の文字列又は10進数バイト配列を16進数バイト配列に変換する方法はないでしょうか? 文字列を1文字ずつ16進数に変換して配列に組み込んでいくしかないのでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

その温度計のメーカーには問い合わせしたのでしょうか サンプルとかはないのですか たとえば "GET" といった文字列を送りたい場合 どのように変換したものを送ればいいのかなど "GET" を "474554"といった文字列に変換して送信なのか 『474554』といった文字列が必要なら dim bld as new System.Text.StringBuilder dim ss as string for each _byte as Byte in AryByte   bld.Append( String.Format( "{0:X2}", _byte ) ) next ss = build.ToString SerialPort1.Write( ss, 0, ss.length ) といった具合でよさそうですが メーカのWebページなどにその機器の使い方のサンプルがあるなら 明示してみるといいかもしれませんよ

yurinchi
質問者

お礼

redfoxさん、回答ありがとうございます。 メーカーに確認した所、私の勘違いだった事がわかりました。 8桁文字列を変換する必要は無く、そのまま文字列送信で良かったのです。 文字列送信する事で、データを受け取る事が出来ました。 今後は、もっと良く確認してからご相談させて頂きます。 本当に申し訳御座いませんでした。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

16進数で表示したいってことですか? 取得した配列の出力を dim ss as String dim bld as new StringBuilder for each _byte as Byte in b   bld.Append( String::Format( "{0,-3:X2}", _byte ) ) next ss = bld.ToString といった具合で 配列bに取得したデータを 文字列ssに16進数として取得できます VBの中で扱う変数に 10進数/16進数の区別はありませんよ

yurinchi
質問者

補足

redfox63さん、回答ありがとうございます。 説明が足りませんでしたので補足します。 シリアル通信で温調器から温度データを引っ張りたいと思っています。 Dim strSend As String Dim AryByte() As Byte = Encoding.ASCII.GetBytes(strSend) SerialPort1.Write(AryByte, 0, AryByte.Length) としたのですが、温調器からの応答がありませんでした。 マニュアルには"送信コードは、16進数に変換しアスキーコード化"と書かれており、 AryByreの中身を確認すると10進数のアスキーコードが格納されていました。 送信コードを16進数のアスキーコードにしたいのです。 宜しくお願い致します。

関連するQ&A