n 個の単精度値を含むバイナリ ファイルがあります。データを書き込むときに使用される形式がビッグエンディアンだったことは知っています。データを float ベクター (以下のコードでは「mainvector」) に読み込むと、デフォルトでは、データはリトルエンディアン形式に従って読み込まれます。以下を使用してデータを読み取ります。
ifstream inputfile("filepath",ifstream::in|ifstream::binary)
inputfile.read(reinterpret_cast<char*>(&mainvector[0]), n*4);
inputfile.close()
スタックオーバーフロー自体のエンディアンと変換については、多くの議論があります。ただし、エンディアンの問題に対処する必要があるのはこれが初めてであり、利用可能なすべての情報が少し圧倒されます。その過程で、バイトが逆になっていることを知りました(ビッグエンディアンとリトルエンディアン)。
バイナリ データのデフォルトのリトル エンディアン処理をビッグ エンディアンに変更したり、元のデータを取得するためにメインベクターを後処理したりするために組み込むことができるワンライナーはありますか? または、各 n 値のバイト順を手動で逆にする必要がありますか?
更新:これにはワンライナーがないようです。バイトオーダーを個別に変更する方法です。これを行う方法については、ここで Mats および他の場所 (例:ここ) で説明されています。