一个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