javascript - 将 Javascript UUID 函数翻译成 C

标签 javascript c

我有一个特定的 JavaScript UUID 创建公式,我需要将其转换为 C。现有的 C 库似乎需要很多加密库依赖项,这些依赖项太多了,无法重新创建这个简单的公式。

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"));

最佳答案

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

这会在 C 中(严重地)产生一个:

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':

void hexify(char* str)
{
    while (*str)
    {
        if (*str == 'x' || *str == 'y')
            *str = hex_digit(*str);
        str++;
    }
}

测试:

int main()
{
    char input[] = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
    hexify(input);
    printf("%s\n", input);
    return 0;
}

结果:

df694488-87ff-4b1c-9a69-c57444f58497

关于javascript - 将 Javascript UUID 函数翻译成 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52097419/

相关文章:

具有缓动功能的 JavaScript 动画

使用mutex_lock、cond_wait的C pthread编程(计算素数)

javascript - d3 : Coloring Multiple Lines from Nested Data

javascript - JavaScript代理模式介绍

javascript - 在 Chrome 中设置 location.href 两次

c - gethostbyaddr : Success 上出现错误

c - 在 CUDA 中实现固定精度数字

c - c中数字的通用根

c - 从 C 中的字符串执行 bash 命令(无系统)

javascript - 在WASM-Bindgen Rust中创建带有鼠标输入事件关闭事件的回调时发生关闭事件调用错误