none
charからのbyte型変換はどうやってやるのでしょうか? RRS feed

  • 質問

  • 宣言はStirngです→        string[] sirial_code = new string[100];
    プログラム上、以下のように文字を入れます。
      sirial_code[0] ="35 40" ;
      この35と40をシリアルデータで出したいので、byteに変換はどうやってやるのかご教授できないでしょうか?
      
      例えば、charで適当な変数を宣言して、取り出すのかなと思いましが、よくわかりません。
      
      適当な変数 char aaa;
      
      aaa = sirial_code[0][0];
      aaaには3が入るが、ここからどうやって、バイトの型にするのか?また、3と5をどうやってくっつけるのか?
      3を左シフトすれば良いかもしれないが、よくわからない。
      
    2006年12月20日 0:36

すべての返信

  • Encodingクラスを調べてみて下さい。
    2006年12月20日 1:04
    モデレータ
  • まず、serial_code に入っているデータ形式と、変換先のデータ形式を明確にしてください。

    ちょっと見た感じ、変換元は 16 進数文字列をスペースで区切ったもの、のように取れましたが。とすると変換先のバイト配列には { 0x35, 0x40 } が入ることを期待しているんでしょうかね?

    2006年12月20日 2:55
  • serial_code に入っているデータ形式は、CStringです。

    それをbyte形式にしたい。

    35、40は文字です。文字をどうやって、数字にするかがわからない。

     

    2006年12月20日 3:01
  • 青柳です。

    byte b = Convert.ToByte("35");
    とできますよ。

    2006年12月20日 3:04
  • CStringとは?
    LPCTSTRでなくて?

    CStringを使っていると、送られてくる文字コードがMFCアプリ側でのコンパイルオプションに依存します。
    MFCアプリ側の文字セットを確認する必要がありそうです。
    (こういう連携を考える場合、Unicodeにしてから送信すべきだと思うけど。)

    2006年12月20日 3:23
  • フォーラムの選択、最初のコードからして、C++ ではないと思います。

    もうすでに答えが 2 つ出ていますが、調べられていないのでしょうか...

    2006年12月20日 3:48
  •  じゃんぬねっと さんからの引用

    フォーラムの選択、最初のコードからして、C++ ではないと思います。


    CStringってワードが出てきたので、CStringっていったらMFCの文字列クラスしかないのでは?
    と思いました。(自作のクラスであればまったくの見当違いです。)

    んで、シリアルデータが云々ってことなんで、C#のアプリと別にMFCアプリがあるかと勝手に予想してしまいました。

    2006年12月20日 3:58
  • C#を使用しているのに、通常ではCStringはないですね。すみませんでした。C#を使用しているので、string型です。

     

    2006年12月20日 23:57
  • 青柳 様

    どうもありがとうございました。

    すばらしい。

     

    2006年12月21日 0:05
  • というか、もう回答は出ていますよね?

    文字列を空白で分割し(Splitメソッドあたり)
    ひとつずつConvert.ToByteをかまして、配列にしていけば終り。

    2006年12月21日 1:03