私はTCPソケットを扱っています。書き込み機能を使用して、開いているソケットにデータを送信しています。
write(Socket_Fd, "テスト", 4);
それはうまくいきます。でもこうやってやると。
#include <stdio.h>
#include <stdlib.h>
typedef unsigned char BYTE;
typedef struct LANC
{
BYTE START;
BYTE END;
} LCODE;
int main(int argc, char *argv[]){
LCODE COMMAND;
COMMAND.START = 0x28;
COMMAND.END = 0x06;
short value = (COMMAND.START << 8) | COMMAND.END;
write(socket_FD, value, sizeof(value);
return 0;
}
値のサイズを確認すると、0x28 と 0x06 を組み合わせたので正しい 2 バイトが得られます。だからprintfをやっている。
printf("%x\n", value);
output is: 2806 which is correct.
printf("%d\n", sizeof(value);
output is: 2 bytes which is correct.
write を使用してオープン ソケットに 16 進数を書き込もうとすると、エラーが発生します。私は何を間違っていますか?