如何将guid转换为* char

大卫

我想将CLSID转换为c ++中的* char,以便可以在文本框中显示它。我是c ++的新手,所以请尽可能简化。

谢谢

达里乌斯爵士

解决方案:

/* 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);

笔记:

该代码存在是因为我必须在Linux下实现GUID解析,否则我将使用StringFromCLSID@krowe提到的Windows API函数

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章