倍精度浮動小数点数をネットワーク経由で送信したいと考えています。(標準 C、標準ソケット) データをネットワーク バイト オーダーとの間で変換するための htond または ntohd はありません。私は何をすべきか?頭の中にいくつかの解決策がありますが、一般的な方法を知りたいです。
(gstreamer で使用される gint64 値のように、64 ビット int を送信するための一般的な方法も知りたいです)
編集:これは私が考えた1つの解決策です。任意のサイズの整数で機能すると思いますが、倍精度では正しいですか?
void swap_if_necessary (void* buff, int buff_len)
{
uint32_t foo = 1;
if ( htonl(foo) != foo )
{
char* to_swap = (char*)buff;
int i;
for (i = 0; i < buff_len/2; i++)
{
char swap_buff = to_swap[i];
to_swap[i] = to_swap[buff_len -1 -i];
to_swap[buff_len -1 -i] = swap_buff;
}
}
}