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

问题描述 投票:0回答:2

如果我想绕数字1-10循环,我会为i增加一个循环,只要它小于或等于10。

当你想循环一个十六进制数时,怎么做?例如,如果有人输入几乎所有的MAC地址,12:34:56:78:90:XX,我如何显示X的所有可能性,从00到FF?

我试过给array = { "0", "1" .... "F"}这样的值,然后每次循环时将i换成其中一个,但这看起来效率非常低。

有没有标准的方法来做到这一点?

javascript hex
2个回答
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);

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

© www.soinside.com 2019 - 2024. All rights reserved.