2011-12-20 16 views
3

Windowsでは、CでランダムなGUIDを生成する必要があります。私は:(各pbBuffer[j]0であれば、例えば、0000-00-00-00-000000バイトを2桁の16進数文字として印刷する方法は?

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未満の任意のバイトを印刷します。 1バイトの文字を2文字にする必要があります(たとえば、が0の場合は00000000-0000-0000-0000-000000000000)。これどうやってするの?

答えて

17

Try printf("%02X", an_integer)02Xには、2つの表示文字をゼロで塗りつぶすと記載されています。

関連する問題