• ベストアンサー

キャスト変換について

VineLinuxでc言語を使って、カメラ画像から取得した物体の座標を別のPCのサーバープログラムにソケット通信で送信したい。 座標の変数がfloat型で格納されていて、そのX値とY値をcharでキャストして一つの変数に繋げてコード化し たいんですが、キャストの段階で数字を文字にできなくて 数字がなにかの文字やコードになってしまうので困ってます。 int x; int y; x = (char)Tbl2[1].X; y = (char)Tbl2[1].Y; printf("j - x=%c y=%c\n",x,y);

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

単にfloatを文字列にしたいということだったら sprintfを使うといいと思います。 勘違いコメントだったらすみません

kiyumoto
質問者

お礼

できました。ありがとうございます

その他の回答 (4)

回答No.5

もしややりたいことは printf("j - x=%g y=%g\n", x, y); ですか?

kiyumoto
質問者

お礼

そうです、質問の仕方が間違っていました。 すみません。

  • otu_otu
  • ベストアンサー率31% (17/54)
回答No.4

少し高度な話になるかもしれませんが、float型のデータはそのまま転送してしまいましょう。 struct Point{ float x,y; }; において、 struct Point pos; pos.x=○○; pos.y=□□; とあったら、 send(s,&pos,sizeof(pos),m); などとするのが一般的です。

kiyumoto
質問者

お礼

参考にします

  • matyrcry
  • ベストアンサー率47% (101/213)
回答No.2

xとyがASCII文字コードでなく数値なのに、printfに%cでつないだので 制御キャラクタに化けたのでは?

kiyumoto
質問者

お礼

参考にします

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

そもそも、具体的に何がどうなってほしいのか、そのあたりから把握できていないように思います。 例えばfloat型の111.222と333.444があるとき、それはcharのどういう値になるような変換をなさりたいんでしょうか。1234000と5678000だったら?

kiyumoto
質問者

お礼

参考にします

関連するQ&A