#javascript #hex
#javascript #шестнадцатеричное
Вопрос:
Если бы я хотел выполнить цикл вокруг чисел 1-10, я бы создал цикл для увеличения i до тех пор, пока оно меньше или равно 10.
Как это делается, когда вы хотите выполнить цикл вокруг шестнадцатеричного числа? Например, если кто-то вводит почти весь MAC-адрес, 12:34:56:78:90: XX, как бы я показал все возможности того, каким X может быть, от 00 до FF?
Я пытался присваивать значения, такие как array = { "0", "1" .... "F"}
, а затем менять i на одно из них каждый раз, когда я зацикливаюсь, но это просто кажется крайне неэффективным.
Есть ли стандартный способ сделать это?
Комментарии:
1. Выполните цикл от 0 до 255 и преобразуйте в шестнадцатеричный.
toString(16)
Ответ №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)
Обратите внимание, padStart
не поддерживается в IE.
Ответ №2:
Вы можете использовать шестнадцатеричные числа в 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);