如何使用uuid_generate_sha1生成v5 UUID?参数及代码示例
uuid_generate_sha1函数参数说明及正确用法
uuid_generate_sha1是libuuid库中用于生成UUID v5的函数,它的参数定义如下:
void uuid_generate_sha1(uuid_t ns, const void *name, size_t namelen, uuid_t out);
各参数的具体作用:
ns:uuid_t类型的命名空间UUID。可以使用库预定义的常量(如UUID_NAMESPACE_DNS、UUID_NAMESPACE_URL等),也可以是自定义的合法UUID。name:指向待生成UUID的输入数据的指针(对应你伪代码中的inputStr)。namelen:输入数据的字节长度,对于字符串来说直接用strlen(inputStr)即可。out:用于存储最终生成的UUID的uuid_t变量,结果会直接写入该变量。
你的伪代码参数传递有误,以下是修正后的完整示例:
#include <uuid/uuid.h> #include <string.h> #include <stdlib.h> void _generate_v5_uuid(const char *inputStr, const uuid_t namespaceUuid, char **outputString) { uuid_t uuid; // 正确调用uuid_generate_sha1 uuid_generate_sha1(namespaceUuid, inputStr, strlen(inputStr), uuid); // 分配内存并将UUID转换为字符串(使用libuuid自带的uuid_unparse函数) *outputString = malloc(37); // UUID字符串固定为36字符,加1字节结束符 if (*outputString != NULL) { uuid_unparse(uuid, *outputString); } }
如果要使用预定义命名空间,示例如下:
// 初始化预定义的DNS命名空间UUID uuid_t ns_dns; uuid_parse(UUID_NAMESPACE_DNS, ns_dns); char *generatedUuid; _generate_v5_uuid("example.com", ns_dns, &generatedUuid); // 使用UUID后记得释放内存 if (generatedUuid != NULL) { free(generatedUuid); }
内容的提问来源于stack exchange,提问作者DivyaAttassery
相关产品推荐
相关产品推荐

