如何在javascript中生成随机十六进制字符串
如何生成仅包含给定长度的十六进制字符(0123456789abcdef)的随机字符串?如果您可以使用lodash库,则以下是生成16个字符字符串的代码片段:如何在javascript中生成随机十六进制字符串,javascript,lodash,Javascript,Lodash,如何生成仅包含给定长度的十六进制字符(0123456789abcdef)的随机字符串?如果您可以使用lodash库,则以下是生成16个字符字符串的代码片段: let randomString = _.times(16, () => (Math.random()*0xF<<0).toString(16)).join(''); let randomString=uu.times(16,()=>(Math.random()*0xF有几种方法。一种方法是从预定义字符串中提取: fun
let randomString = _.times(16, () => (Math.random()*0xF<<0).toString(16)).join('');
let randomString=uu.times(16,()=>(Math.random()*0xF有几种方法。一种方法是从预定义字符串中提取:
function genHexString(len) {
const hex = '0123456789ABCDEF';
let output = '';
for (let i = 0; i < len; ++i) {
output += hex.charAt(Math.floor(Math.random() * hex.length));
}
return output;
}
函数genHexString(len){
常量十六进制='0123456789ABCDEF';
让输出=“”;
for(设i=0;i
另一种方法是附加一个0到15之间的随机数,并使用toString转换为十六进制:
function genHexString(len) {
let output = '';
for (let i = 0; i < len; ++i) {
output += (Math.floor(Math.random() * 16)).toString(16);
}
return output;
}
函数genHexString(len){
让输出=“”;
for(设i=0;i
使用扩展运算符和.map()
演示1
const genRanHex=size=>[…数组(大小)].map(()=>Math.floor(Math.random()*16).toString(16)).join(“”);
控制台日志(genRanHex(6));
控制台日志(genRanHex(12));
log(genRanHex(3));
这是一个避免一次生成一个数字的版本;它可能只适用于较短的长度
function genHexString(len) {
const str = Math.floor(Math.random() * Math.pow(16, len)).toString(16);
return "0".repeat(len - str.length) + str;
}
这适用于长度不超过13:
randomHex=length=>(
“0”。重复(长度)
+数学地板((数学随机()*16**长度))
.toString(16)
).切片(-长度);
控制台日志(随机十六进制(4));
控制台日志(随机十六进制(6));
控制台日志(randomHex(13));
console.log(randomHex(20));
什么是“十六进制字符”,即aAbBfF
有效吗?还有,“正常”random还是crypto strong random?更新的问题。普通的random就足够了…parseInt从字符串返回整数,其中包括使用指定基数编码的数字,而不是相反的方式。你完全正确,我不知道我在想什么,感谢你发现了这一点,@LukášŘádek请参阅更新。你知道它不成功的可能性有多大吗当两个客户端generate@Naga不够安全。我最终创建了一个miro服务来跟踪客户端中16个字符的十六进制字符串。如果您只需要4位数字,我想您可以将前16位改为4位。