web-dev-qa-db-ja.com

浮動小数点エンディアンネス?

リアルタイムオフショアシミュレータ用のクライアントとサーバーを作成しています。ソケットを介して大量のデータを送信する必要があるため、送信できるデータの量を最大化するためにバイナリデータを使用しています。整数のエンディアン、およびhtonlとntohlを使用してエンディアンの問題を回避する方法についてはすでに知っていますが、私のアプリケーションは、ほとんどすべてのシミュレーションソフトウェアとして、多くの浮動小数点を処理します。

私の質問は次のとおりです。浮動小数点数のバイナリ形式を処理するエンディアンの問題はありますか?私のコードを実行するすべてのマシンが浮動小数点のIEEE実装を使用していることを知っていますが、浮動小数点数を処理するときにエンディアンの問題がありますか?

私は同じエンディアンのマシンにしかアクセスできないので、これを自分でテストすることはできません。だから、誰かがこれを手伝ってくれるとうれしいです。

前もって感謝します。

40
cake

はい、浮動小数点はエンディアンに依存する可能性があります。詳細については、 フロート値をビッグエンディアンからリトルエンディアンに変換 を参照してください。必ずコメントを読んでください。

10
Gregor Brandt

Wikipedia によると、

浮動小数点とエンディアン

一部のマシンでは、整数はリトルエンディアン形式で表されていましたが、浮動小数点数はビッグエンディアン形式で表されていました。多くの浮動小数点形式があり、標準の「ネットワーク」表現がないため、浮動小数点値を転送するための標準は作成されていません。これは、あるマシンで書き込まれた浮動小数点データが別のマシンで読み取れない可能性があることを意味します。これは、メモリ表現のエンディアンがIEEE仕様の一部ではないため、両方がIEEE 754浮動小数点演算を使用する場合でも同じです。

19
Daniel Pryden