-4

入力として .xml ファイルから直径ファイルを作成する Unix コードがありました。Linux プラットフォームに移行したため、同じユーティリティを作成する必要があります。コードは正常にコンパイルされましたが、ユーティリティが期待どおりに出力ファイルのコンテンツを作成していません。バイトごとにビットが逆になっています。Linux がリトルエンディアンであるためだと思います。

出力ファイルに書き込まれるメッセージ ブロックの形式は次のとおりです。

ACE_Message_Block* mb = m_pReqMsgBlock;
while (mb) {
                out.write(mb->rd_ptr(), mb->size());
                mb = mb->cont();
           }

期待どおりにバイトを書き込むことができるように、コードに追加できるものを誰か提案できますか?

4

2 に答える 2

0

バイナリ データをファイルに書き込んでいる場合、そのバイナリ データの「正しい」エンディアンはマシン固有です。したがって、エンディアンが異なるマシンで実行すると、このデータが異なることは間違いありません。おそらく、同じ Linux マシン上の別のプログラムを使用して、このバイナリ データを再度解析することになるでしょう。

出力をエンディアンにとらわれないようにしたい場合 (たとえば、データを読み取るプログラムがビッグ エンディアンの UNIX マシン上にあるため)、バイナリ データを出力しないでください。

于 2016-06-14T12:08:16.300 に答える