Mac OS X では、符号なし整数に対して NSSwap*ToHost ファミリーの関数を使用しています。
サイズ 8、16、32、および 64 の符号付き整数に対してこれを行う正しい方法は何ですか? 他のスタック オーバーフローの投稿で推奨されている ntoh* 関数を見てきましたが、それらは符号なし整数を返します。
Mac OS X では、符号なし整数に対して NSSwap*ToHost ファミリーの関数を使用しています。
サイズ 8、16、32、および 64 の符号付き整数に対してこれを行う正しい方法は何ですか? 他のスタック オーバーフローの投稿で推奨されている ntoh* 関数を見てきましたが、それらは符号なし整数を返します。
符号付き整数にも同じ方法を使用できます。キャストを使用してコンパイラを静かにします。
値を符号なし整数にキャストして戻す場合は、これらの関数を符号付きエンディアンスワッピングに使用しても問題はありません。ただし、リトルエンディアンデータをビッグエンディアンデータに明示的に変換する場合は、これらの関数を使用しないでください。ntoh*関数はビッグエンディアンアーキテクチャでスワッピングを実行しないためです。一方、ローカルマシンのエンディアンに関係なく、ローカルマシンからのデータがビッグエンディアンに変換されていることを確認したい場合は、これらの関数で問題なく動作します。