- ベストアンサー
キャスト変換について
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);
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
単にfloatを文字列にしたいということだったら sprintfを使うといいと思います。 勘違いコメントだったらすみません
その他の回答 (4)
- ___noboru___
- ベストアンサー率28% (33/117)
もしややりたいことは printf("j - x=%g y=%g\n", x, y); ですか?
お礼
そうです、質問の仕方が間違っていました。 すみません。
- otu_otu
- ベストアンサー率31% (17/54)
少し高度な話になるかもしれませんが、float型のデータはそのまま転送してしまいましょう。 struct Point{ float x,y; }; において、 struct Point pos; pos.x=○○; pos.y=□□; とあったら、 send(s,&pos,sizeof(pos),m); などとするのが一般的です。
お礼
参考にします
- matyrcry
- ベストアンサー率47% (101/213)
xとyがASCII文字コードでなく数値なのに、printfに%cでつないだので 制御キャラクタに化けたのでは?
お礼
参考にします
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
そもそも、具体的に何がどうなってほしいのか、そのあたりから把握できていないように思います。 例えばfloat型の111.222と333.444があるとき、それはcharのどういう値になるような変換をなさりたいんでしょうか。1234000と5678000だったら?
お礼
参考にします
お礼
できました。ありがとうございます