1
A
回答
2
C'ish溶液:
/* 128 bit GUID to human-readable string */
char * guid_to_str(const GUID * id, char * out) {
int i;
char * ret = out;
out += sprintf(out, "%.8lX-%.4hX-%.4hX-", id->Data1, id->Data2, id->Data3);
for (i = 0; i < sizeof(id->Data4); ++i) {
out += sprintf(out, "%.2hhX", id->Data4[i]);
if (i == 1) *(out++) = '-';
}
return ret;
}
這假定輸出緩衝器已經被分配,並且應當是尺寸爲37個字節(包括空終止字符)的。
輸出的形式爲"75B22630-668E-11CF-A6D9-00AA0062CE6C"
用例:
GUID g;
char buffer[37];
std::cout << guid_to_str(&g, buffer);
注:
存在此代碼,因爲我不得不實施GUID Linux下的解析,否則我會使用@krowe提到的Windows API函數StringFromCLSID
。
2
的Windows API具有這樣的功能:
CLSID clsid;
HRESULT hr = CLSIDFromProgID ((OLESTR "Adobe.SVGCtl.3"),&clsid);
// Get class id as string
LPOLESTR className;
hr = StringFromCLSID(clsid, &className);
// convert to CString
CString c = (char *) (_bstr_t) className;
// then release the memory used by the class name
CoTaskMemFree(className);
// Now c is ready to use
1
一個CLSID相同的UUID,這樣你就可以使用UuidToString()功能
http://msdn.microsoft.com/en-us/library/windows/desktop/aa379352(v=vs.85).aspx
2
Here是一個很好的例子,用於將GUID轉換爲字符串,反之亦然,我在我的項目中使用:
std::string guidToString(GUID guid) {
std::array<char,40> output;
snprintf(output.data(), output.size(), "{%08X-%04hX-%04hX-%02X%02X-%02X%02X%02X%02X%02X%02X}", 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]);
return std::string(output.data());
}
GUID stringToGUID(const std::string& guid) {
GUID output;
const auto ret = sscanf(guid.c_str(), "{%8X-%4hX-%4hX-%2hX%2hX-%2hX%2hX%2hX%2hX%2hX%2hX}", &output.Data1, &output.Data2, &output.Data3, &output.Data4[0], &output.Data4[1], &output.Data4[2], &output.Data4[3], &output.Data4[4], &output.Data4[5], &output.Data4[6], &output.Data4[7]);
if (ret != 11)
throw std::logic_error("Unvalid GUID, format should be {00000000-0000-0000-0000-000000000000}");
return output;
}
在該示例中,首先在轉換爲字符串之前使用char *,因此這正是您以有效方式查找的內容。
相關問題
- 1. 如何將System :: Char轉換爲C++ char
- 2. 如何將unsigned char *轉換爲char *
- 3. 將char *轉換爲char? C++
- 4. 如何將字符串轉換爲Guid
- 5. 如何將字符串轉換爲Guid?
- 6. 如何將Guid []轉換爲String?
- 7. 如何將byte [100]轉換爲guid
- 8. 將Guid轉換爲Cassandra UUID
- 9. SSIS:將INT轉換爲GUID?
- 10. Flex:將GUID轉換爲Base64
- 11. 將guid轉換爲數值
- 12. 將GUID轉換爲varchar(32)
- 13. 將GUID轉換爲System.Drawing.Imaging.ImageFormat
- 14. 將URI轉換爲GUID
- 15. 將stringbuilder轉換爲guid
- 16. 將Raw(16)轉換爲GUID
- 17. *將char轉換爲main並將* char轉換爲struct
- 18. 如何將* char轉換爲_TCHAR?
- 19. 如何將char轉換爲實際值?
- 20. 如何將unsigned char轉換爲jbyteArray
- 21. 如何將NSString轉換爲char?
- 22. Android - 如何將KeyEvent KeyCode轉換爲Char?
- 23. 如何將char向量轉換爲stringstream
- 24. 如何將char *轉換爲float xcode
- 25. 如何在android中將char'轉換爲\'?
- 26. 如何將int轉換爲char *?
- 27. 如何將wchar_t **轉換爲char **?
- 28. 如何將int轉換爲signed char?
- 29. 如何將PCWSTR轉換爲char []或wchar_t []
- 30. 如何將System :: String ^轉換爲const char *?
請給我一個如何使用這個例子的例子。謝謝 – David
謝謝大家,我可以給你的是+1和打勾 – David