ソケットからデータを受信しています。
その後、受信したchar配列に1バイトを出力します。タイプキャスト後に1バイトを出力して
は、私が使用するコードです:
char buf[100];
int i = 0;
while (1)
{
rc = recv(socket_fd, buf, sizeof(buf), 0);
if (rc > 0)
{
printf("Pos1 = %x.\n", (char)buf[17]);
printf("Pos2 = %x.\n", (char)buf[22]);
}
}
しかし、これは4バイトを出力します。文字をの符号なしの文字にタイプキャストすると、1バイトが出力されます。では、これら2つのタイプキャストの違いは何ですか。つまり、印刷されるバイト数が異なります。
出力:
Pos1 = 1
Pos2 = ffffff83
なぜあなたは '%x'を使用していますか? 16進値が必要ですか? – Jarvis
はい。値を16進数で表示したい。 –
あなたの出力を共有してください。それが4バイトを印刷しているとはどのように判断しましたか? –