char配列に送信するデータを収集するUDPプログラムを使用していますが、送信する必要のあるデータは32ビット整数です。このデータを送信するにはどうすればよいですか?
質問する
3276 次
1 に答える
6
C では、整数型 (または任意の型) を文字配列で安全に表現し、ポインター キャストを使用して戻すことができます。これは C 標準で保証されています。
ソケットプログラミングでは、通常、以前にネットワークバイトオーダーに変換した整数に対してこの操作を実行する必要があります。
uint32_t translated_int = htonl(original_int);
char *binary_string = (char *)&translated_int;
// binary_string now a pointer to the translated_int, represented as a char array
渡すためにコピーが必要な場合は、memcpy
代わりに次のようにします。
char binary_string[ sizeof(translated_int) ];
memcpy(binary_string, &translated_int, sizeof translated_int);
// binary_string now a copy of translated_int, represented as a char array
翻訳を戻したい場合:
uint32_t translated_int, original_int;
memcpy(&translated_int, binary_string, sizeof translated_int);
original_int = ntohl(translated_int);
于 2013-01-29T18:26:51.850 に答える