入力として.xmlファイルから直径を作成するUnixコードがありました。 私たちはLinuxプラットフォームに移行したので、同じユーティリティを作成する必要があります。コードは正常にコンパイルされましたが、ユーティリティは出力ファイルの内容を作成しません。出力ファイルに書き込まれるUnixのコード(ビッグエンディアン)とlinux(リトルエンディアン)の同じコードは、異なる出力直径のファイルを作成します。
メッセージブロックは、フォーマットは次のとおりです。
ACE_Message_Block* mb = m_pReqMsgBlock;
while (mb) {
out.write(mb->rd_ptr(), mb->size());
mb = mb->cont();
}
誰でもバイトが期待される方法で書き込むことができるように、余分なコードを追加することができるものをお勧めすることはできますか?
"Linuxはリトルエンディアンです" - いいえ、あなたのマシンです!あなたのコードがデータの特定の表現に依存している場合、それはちょうどひどく書かれています。ビットシフトを使用して適切なシリアル化を行い、実装固有の動作に決して依存しないでください。 – Olaf
各ビットを逆にすると役立つかどうか試してみてください。 http://stackoverflow.com/questions/2602823/in-c-c-whats-the-simplest-way-to-reverse-the-order-of-bits-in-a-byte。これは、エンディアンが異なるシステムにファイルを転送する場合にのみ行うべきであることに注意してください。 –
これまでのプラットフォームは何でしたか?実際の出力と期待される出力を指定してください。 –