如何在每个可能的十六进制数字(00-FF)之间循环

时间:2019-03-29 13:39:15

标签: javascript hex

如果我想在数字1-10之间循环,只要i小于或等于10,我就会对其进行循环。

当您要在十六进制数字周围循环时,该怎么做?例如,如果有人输入几乎所有的MAC地址,即12:34:56:78:90:XX,我如何显示X的所有可能性,即从00到FF?

我尝试提供诸如array = { "0", "1" .... "F"}之类的值 然后每次循环时将我更改为其中之一,但这似乎效率很低。

有标准的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用.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

答案 1 :(得分:1)

您可以在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);