1
私のマシンはリトルエンディアンで動作します。 ビッグエンディアンエンコーディングのC++ std :: ios :: binaryを使って読みなければなりません。それを行うための標準と速い方法がありますか?瞬間のために 、生のデータを読んだ後、私は次のようにします。bigendianで書かれたファイルを読む
(ダブルを読んで)
char raw [8];
double d = 0; //maybe initialization is not needed
file.read(raw,8); //4 for an int
for(int k = 0; k < 8; k++) {
memcpy((void *)(((char *)(&d))+k), (const void *)(raw+j+7-k), 1);
}
(整数を読み込む)
char raw [4];
file.read(raw,4); //4 for an int
int i = (raw[j] << 24) | (raw[j+1] << 16) | (raw[j+2] << 8) | raw[j+3];
'男もhtonl' –
、代わりに(可能性が非常に高い間違った)' 4'、および 'はsizeof(ダブル)の代わりに' '8'の'はsizeof(int型) ''男ntohl'。 –
@WilliamPursell彼はファイルを読み込んでいるので、4は問題ありません。しかし、それはターゲットアーキテクチャで適切なものに変換する必要がありますが、私は同意します。 – JustSid