Windows(リトルエンディアン)とLinuxエンベデッド(エンディアンの大小)という3つのハードウェアプラットフォームをサポートする必要があります。私たちのデータストリームは使用するマシンに依存し、データはビットフィールドに分割する必要があります。バイトオーダーのビッグエンディアンとリトルエンディアンのサポート
詳細を抽象化するために、可能であれば単一のマクロを記述したいと思います。 Linuxでは、リトルエンディアンの変換には/bswap_32
/bswap_64
を使用できます。
しかし、これは私のVisual C++には見つかりません。
両方のプラットフォーム(WindowsおよびLinux)用の汎用ビルトインはありますか?
もしそうでなければ、バイトスワップを行うためにVisual C++で何が使えますか?
ありがとうございました。あなたがshort
ため
を持って、両方のプラットフォームで
これらの機能は、ネットワーク(インターネットなど)を理解するすべてのOSにとって比較的普遍的です。最も最近のOS –
'union 'を使った実装例は動作することが保証されていないことに注意してください。 –
はい、組合を梱包するのが正しいです。これを指摘してくれてありがとう。私の答えの更新を見てください。 @SimonRichter – alk