我有一个用于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"));
发布于 2018-08-30 21:02:55
该函数产生一个随机的十六进制数字。
这会(糟糕地)在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-c57444f58497https://stackoverflow.com/questions/52097419
复制相似问题