You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:05:32