一個UUID轉換我有一個保存這樣一個16個字節數據的UUID:如何拯救字節數組轉換爲字符串(C++)
unsigned char uuid[16]; //128-bits unique identifier
,我想將其轉換爲一個的std :: string。我可以寫一個循環來思考所有字節並生成字符串,但我正在尋找一個更簡單/更快的解決方案。有沒有這樣的解決方案?
一個UUID轉換我有一個保存這樣一個16個字節數據的UUID:如何拯救字節數組轉換爲字符串(C++)
unsigned char uuid[16]; //128-bits unique identifier
,我想將其轉換爲一個的std :: string。我可以寫一個循環來思考所有字節並生成字符串,但我正在尋找一個更簡單/更快的解決方案。有沒有這樣的解決方案?
如果你真的想避免一個循環,你總是可以這樣做:
char str[37] = {};
sprintf(str,
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], uuid[6], uuid[7],
uuid[8], uuid[9], uuid[10], uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]
);
不是真的優雅,但我認爲這是你可以不循環,沒有平臺的依賴最好的。
basic_string的supplys此構造函數:
basic_string(const E *s, size_type n, const A& al = A());
所以,你可以做這樣的:
string strUuid(uuid, 16);
寫一個循環。對於每個字節,%#02x的snprintf。不要忘記傳統的破折號。
沒有與平臺無關的(即POSIX)API格式化UUID,所以這是最好的。
我已經在我的問題中提出了這種方法,但我正在尋找更簡單/更快的解決方案。 – mans 2014-08-29 10:18:49
什麼平臺? – trojanfoe 2014-08-29 10:12:00
它是在Windows上,但有沒有解決方案是平臺獨立的? – mans 2014-08-29 10:13:44
投票結束爲「不清楚你的要求」,因爲問題不明確。對「轉換爲字符串」這個問題提供了答案的人被拒絕了。對於回答這個問題的人來說,這絕對不公平。 – jww 2014-08-29 11:31:42