如何将保存在字节数组中的 UUID 转换为字符串 (c++)

man*_*ans 2 c++ uuid guid

我有一个保存为 16 字节数据的 UUID,如下所示:

   unsigned char uuid[16]; //128-bits unique identifier
Run Code Online (Sandbox Code Playgroud)

我想将其转换为 std::string。我可能可以编写一个循环来思考所有字节并生成字符串,但我正在寻找一个更简单/更快的解决方案。有这样的解决办法吗?

Hor*_*ing 7

如果你真的想避免循环,你总是可以这样做:

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]
);
Run Code Online (Sandbox Code Playgroud)

不是很优雅,但我认为这是在没有循环和平台依赖的情况下可以获得的最好的。