- 締切済み
GetFileSizeの最大
GetFileSizeは関数が失敗すれば、0xFFFFFFFFを返します。 説明のために、DWORDが4ビットだったとすると、 GetFileSizeが失敗して 1111が返ることになると思います。 そうすると、返り値で得られる最大サイズは0111ですか? 第2引数を使った場合は、0111と1111を合わせたものが最大サイズで、 実際だと、01111111111111111111111111111111と、1が32個を合わせた、 16進数だと、7FFFFFFFとFFFFFFFFを合わせた、 10進数だと、2147483647と4294967295を合わせた 6442450942 (6ギガぐらい) が、GetFileSizeで得ることができる 最大ファイルサイズですか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>教えてくれた2の64乗バイトとはGetFileSizeで得ることができる最大ファイルサイズのことですか? そうです。 32bitの数値を2つ使って64bitの数値を表すのですから。 正確には FFFFFFFFFFFFFFFF = 2の64乗 - 1 =18446744073709551615 となります。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>そうすると、返り値で得られる最大サイズは0111ですか? いいえ、1110です。 >第2引数を使った場合は、0111と1111を合わせたものが最大サイズで いいえ、11111111です。 GetLastErrorで成功、失敗を判断する必要があります。 >10進数だと、2147483647と4294967295を合わせた >6442450942 (6ギガぐらい) が、GetFileSizeで得ることができる >最大ファイルサイズですか? なぜ足し算するんですか? 2の64乗バイトでは? FFFFFFFFFFFFFFFFバイトですよ。
補足
足し算したのは勘違いでした。 教えてくれた2の64乗バイトとはGetFileSizeで得ることができる最大ファイルサイズのことですか?