[英]Conversion from GB to DWORD or vice-versa
我想比較文件大小以檢查它是否低於 8GB。 如何將 filseSize(以 DWORD 格式)轉換為 GB 或將 8 GB 轉換為 DWORD?
謝謝!
我從您的DWORD
提示中猜測,您在 Windows 平台上並使用 Win32 API 獲取文件大小。
不要調用GetFileSize 。 它僅限於 DWORD(32 位),我認為這是您的問題所在。
相反,請調用GetFileSizeEx ,它會為您返回文件句柄的 64 位結果。 或者GetFileAttributesEx ,它返回一個 64 位大小的結構,分成兩個雙字。
例子:
const LONGLONG MAX_FILE_SIZE = 1024LL * 1024LL * 1024LL * 8;
LARGE_INTEGER li = {0};
if (GetFileSizeEx(hFile, &li)) {
LONGLONG filesize = li.QuadPart;
if (filesize > MAX_FILE_SIZE) {
...
}
}
或者
const LONGLONG MAX_FILE_SIZE = 1024LL * 1024LL * 1024LL * 8;
WIN32_FILE_ATTRIBUTE_DATA info = {0};
if (GetFileAttributesEx(filename, GetFileExInfoStandard, (void*)&info)) {
LONGLONG filesize = info.nFileSizeHigh;
filesize = filesize << 32;
filesize |= info.nFileSizeLow;
if (filesize > MAX_FILE_SIZE) {
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.