我正在尝试使用c ++中的winapi获取卷序列号
我有以下代码:
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?
答案 0 :(得分:6)
您只需要使用%X
格式说明符以十六进制而不是十进制打印值:
printf("VolumeSerialNumber: 0x%X\n", VolumeSerialNumber);
将输出:
0x22100dd0
如果确实需要完全相同的输出,您可以使用LOWORD
和{{3}将DWORD
分隔为其WORDS
的上下printf("Volume Serial Number is %04X-%04X\n",
HIWORD(VolumeSerialNumber),
LOWORD(VolumeSerialNumber));
}宏:
Volume Serial Number is 2210-0DD0
将输出:
{{1}}
答案 1 :(得分:0)
为了将int转换为hex-string,我找到了这个解决方案:
char Hex_output [500];
itoa (VolumeSerialNumber ,Hex_output,16);