我需要在c中生成随机guid,在windows中。我有:
HCRYPTPROV hCryptProv = 0;
BYTE pbBuffer[16];
int i;
if (!CryptAcquireContextW(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
exit(1);
for (i = 0; i < N; i++) {
if (!CryptGenRandom(hCryptProv, 16, pbBuffer))
exit(1);
printf("%X%X%X%X-%X%X-%X%X-%X%X-%X%X%X%X%X%X\n", pbBuffer[0], pbBuffer[1], pbBuffer[2], pbBuffer[3],
pbBuffer[4], pbBuffer[5], pbBuffer[6], pbBuffer[7],
pbBuffer[8], pbBuffer[9], pbBuffer[10], pbBuffer[11],
pbBuffer[12], pbBuffer[13], pbBuffer[14], pbBuffer[15]);
}
但是,这会将小于0f的任何字节打印为单个字符(例如,如果每个
0000-00-00-00-000000
都是pbBuffer[j]
,则为0
)。我需要将每个字节打印为两个字符(例如,如果每个00000000-0000-0000-0000-000000000000
都是pbBuffer[j]
,则为0
)。我该怎么做? 最佳答案
尝试printf("%02X", an_integer)
。02X
表示零填充到两个显示字符。