我有一个特定的 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/