dポイントプレゼントキャンペーン実施中!

Microsoft Visual C++ 2010 Expressでプログラミングしています。

RecvBufという文字列に入った特定の位置の6バイトのデータを取り出したいと思っています。

それで、その6バイトには、TCP通信でアクセスしてきたクライアントのシリアル番号があるので、どのクライアントPCがつながってきたかを識別するため、その6バイト数値を16進数の文字列に変換してprintfで出力したいと思っています。


例えば
RecvBuf[0x08] = 0x00
RecvBuf[0x09] = 0x11
RecvBuf[0x0a] = 0x22
RecvBuf[0x0b] = 0x33
RecvBuf[0x0c] = 0x44
RecvBuf[0x0d] = 0x55

というデータ数値が入っていた場合、これを文字に変換する方法はどのようにしたら良いでしょうか?

A 回答 (2件)

「文字に変換する」って, どういうこと?



単に %x で出しちゃいかんの?
    • good
    • 0
この回答へのお礼

(◎○◎) 大変もうしわけありません。確かにそれで出ますね。助かりましたw

お礼日時:2013/02/19 01:22

#1さんの回答で必要十分だと思いますが、もしかして%02xを知らないのかなと思ったので書きます。



あとは、snprintfやfor文がわからなくて、こういうのをわからないとか?
#define SERIAL_SIZE 6
#define OFFSET 0x08
char buf[sizeof(char) * SERIAL_SIZE + 1];
for (int i = 0; i < SERIAL_SIZE; i++) {
snprintf(&buf[i * sizeof(char) * 2], 3, "%02x", RecvBuf[OFFSET + i]);
}
printf("%s", buf);

そもそも、printfしたいだけだったらsnprintfを持ち出すまでもなく、もっと単純にこれでよいと思いますが。
for (int i = 0; i < SERIAL_SIZE; i++) {
printf("%02x", RecvBuf[OFFSET + i]);
}
    • good
    • 0
この回答へのお礼

(◎○◎) 大変もうしわけありません。確かにそれで出ますね。助かりましたw

また、いろいろと細かいコードもありがとうございます。

お礼日時:2013/02/19 01:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!