2014-05-21 94 views
2

我試圖讓卷序列號與WINAPI在C++中如何獲得卷序列號

我有以下代碼:

DWORD VolumeSerialNumber=0; 
GetVolumeInformation(L"c:\\", NULL, NULL, &VolumeSerialNumber, NULL, NULL, NULL, NULL); 

它工作正常,並返回VolumeSerialNumber=571477456 但在cmd,當我使用dir我得到:

C:\Users\User>dir 
Volume in drive C is Windows 
Volume Serial Number is 2210-0DD0 

如何轉換571477456到2210-0DD0?

回答

6

你只需要打印十六進制而不是十進制值,使用%X格式說明:

printf("VolumeSerialNumber: 0x%X\n", VolumeSerialNumber); 

這將輸出:

0x22100dd0 

如果你真的要求完全相同的輸出,您可以將DWORD分隔爲其較低和較高的WORDS,使用LOWORDHIWORD宏:

printf("Volume Serial Number is %04X-%04X\n", 
    HIWORD(VolumeSerialNumber), 
    LOWORD(VolumeSerialNumber)); 

將輸出:

Volume Serial Number is 2210-0DD0 
0

以int轉換爲十六進制字符串,我發現這個解決方案:

char Hex_output [500]; 
itoa (VolumeSerialNumber ,Hex_output,16);