首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Javascript UUID函数转换为C++

将Javascript UUID函数转换为C++
EN

Stack Overflow用户
提问于 2018-08-30 20:44:07
回答 1查看 76关注 0票数 1

我有一个用于JavaScript的特定UUID创建公式,我需要将其转换为C。现有的C库似乎需要大量的密码库依赖项,而这些依赖项对于重新创建这个简单的公式来说实在是太多了。

JavaScript:

代码语言:javascript
复制
   function generate(prefix)
   {
    return (prefix + 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx')
        .replace(/[xy]/g, function (c) {
    
          var r = Math.random() * 16 | 0;
          var v = (c === 'x') ? r : (r & 0x3 | 0x8);
    
          return v.toString(16);
        });
    }
    console.log(generate("Hello"));

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-30 21:02:55

该函数产生一个随机的十六进制数字。

这会(糟糕地)在C中生成一个:

代码语言:javascript
复制
char hex_digit(char c)
{
    char* hexes = "0123456789abcdef";
    int r = rand() % 16;
    int v = c == 'x' ? r : (r & 0x3 | 0x8);
    return hexes[v];
}

然后,它将字符串中的'x''y'替换为随机十六进制数字:

代码语言:javascript
复制
void hexify(char* str)
{
    while (*str)
    {
        if (*str == 'x' || *str == 'y')
            *str = hex_digit(*str);
        str++;
    }
}

测试:

代码语言:javascript
复制
int main()
{
    char input[] = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
    hexify(input);
    printf("%s\n", input);
    return 0;
}

结果:

代码语言:javascript
复制
df694488-87ff-4b1c-9a69-c57444f58497
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52097419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档