如果我想绕数字1-10循环,我会为i增加一个循环,只要它小于或等于10。
当你想循环一个十六进制数时,怎么做?例如,如果有人输入几乎所有的MAC地址,12:34:56:78:90:XX,我如何显示X的所有可能性,从00到FF?
我试过给array = { "0", "1" .... "F"}
这样的值,然后每次循环时将i换成其中一个,但这看起来效率非常低。
有没有标准的方法来做到这一点?
您可以在JavaScript中使用十六进制数字,前缀为0x
console.log(0xF)
它们将被转换为十进制,但使用该表示法可能更容易,例如,如果要循环到0xFF
。
您还可以在invoking the .toString
method and supplying a radix时将数字转换为其他数字基数
let num = 12;
let otherNum = 255;
console.log(num.toString(16));
console.log(otherNum.toString(16));
您可以将两者结合起来以生成所有可能的值:
const allValues = [];
for(let i = 0; i <= 0xFF; i++) {
let num = i.toString(16).toUpperCase();
allValues.push(num);
}
console.log(allValues);
您可以使用.toString(16)
以十六进制格式获取任何数字。
const result = []
for (let i = 0; i <= 0xFF; ++i)
result.push(i.toString(16))
console.log(result)
然后你可能想用padStart
将前几个填零。
const result = []
for (let i = 0; i <= 0xFF; ++i)
result.push(i.toString(16).padStart(2, '0'))
console.log(result)
注意,IE中不支持padStart
。