簡體   English   中英

從 GB 轉換為 DWORD 或反之亦然

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM