Как зациклить каждое возможное шестнадцатеричное число (00 - FF) - PullRequest
0 голосов
/ 29 марта 2019

Если бы я хотел сделать цикл вокруг чисел 1-10, я бы сделал цикл для увеличения i до тех пор, пока он меньше или равен 10.

Как это сделать, если вы хотите выполнить циклвокруг шестнадцатеричного числа?Например, если кто-то вводит почти весь MAC-адрес, 12: 34: 56: 78: 90: XX, как бы я показал все возможности того, что X может быть, от 00 до FF?

Я попытался дать такие значения, как array = { "0", "1" .... "F"}, а затем изменить i, чтобы он был одним из тех, каждый раз, когда я повторяю цикл, но это просто кажется неэффективным.

Существует ли стандартспособ сделать это?

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Вы можете использовать шестнадцатеричные числа в JavaScript, добавив к ним префикс 0x

console.log(0xF)

Они будут преобразованы в десятичную, но может быть проще использовать эти обозначения, например, если вы хотите зациклить до 0xFF.

Вы также можете преобразовать число в другие базы чисел, когда вызывает метод .toString и задает основание

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 голос
/ 29 марта 2019

Вы можете использовать .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)

Примечание. padStart не поддерживается в IE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...