I have a GUID variable and I want to write inside a text file its value. GUID definition is:
typedef struct _GUID { // size is 16 DWORD Data1; WORD Data2; WORD Data3; BYTE Data4[8]; } GUID;
But I want to write its value like:
CA04046D-0000-0000-0000-504944564944
I observed that:
Data1
holds the decimal value for CA04046DData2
holds the decimal value for 0Data3
holds the decimal value for next 0But what about the others?
I have to interpret myself this values in order to get that output or is there a more direct method to print such a variable?
Sometimes its useful to roll your own. I liked fdioff's answer but its not quite right. There are 11 elements of different sizes.
printf("Guid = {%08lX-%04hX-%04hX-%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX%02hhX%02hhX}", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); Output: "Guid = {44332211-1234-ABCD-EFEF-001122334455}"
Refer to Guiddef.h for the GUID layout.
Same, as a method:
void printf_guid(GUID guid) { printf("Guid = {%08lX-%04hX-%04hX-%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX%02hhX%02hhX}", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); }
you can also pass a CLSID to this method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With