Возвращает ли .toString(16) строчный регистр? - программирование
Подтвердить что ты не робот

Возвращает ли .toString(16) строчный регистр?

При преобразовании десятичного числа в базу выше 10, используя .toString(base), кажется, что я всегда получаю строчную строчку. Могу ли я полагаться на это? Строка в верхнем регистре будет правильной, хотя для моей заявки потребуется преобразование.

Дополнительный кредит для ссылки на часть спецификации, которая определяет это (я искал и не мог ее найти) и для любых встречных примеров (браузеры, которые возвращают прописные буквы).

Пример:

(12648430).toString(16) // returns: "c0ffee". Not "C0FFEE"
4b9b3361

Ответ 1

Возможно. Он определенный в спецификации 5-го издания, §15.7.4.2:

Если ToInteger (radix) не является целым числом от 2 до 36 включительно, исключите исключение RangeError. Если ToInteger (radix) является целым числом от 2 до 36, но не 10, результатом является строковое представление этого значения Number с использованием указанного основани. Буквы az используются для цифр со значениями от 10 до 35. Точный алгоритм зависит от реализации, если радиус не равен 10, однако алгоритм должен быть обобщением, указанным в 9.8.1.

(мой акцент)

Но, спецификация 3-го издания (с 1999 года) не сказала этого, он просто сказал:

Если radix является целым числом от 2 до 36, но не 10, результатом является строка, выбор которой зависит от реализации.

... так что вы можете найти двигатели в дикой природе, которые используют верхний регистр (или что-то еще полностью). Я бы сказал, что это довольно маловероятно, они обычно не добавляли такие вещи в спецификацию, если бы существовали значительные известные реализации, которые не имели такого поведения. Я получаю нижний регистр в текущих версиях Chrome, Firefox и Opera, а также в IE8 и даже IE6. Поэтому я бы сказал, что это, вероятно, довольно непротиворечивое.

Ответ 2

(12648430).toString(16) всегда будет возвращать: "c0ffee". Не "C0FFEE", после проверки его с помощью некоторых браузеров, я нашел подтверждение:

Объект Number переопределяет метод toString() объекта Object; это не inherit Object.prototype.toString(). Для объектов Number метод toString() возвращает строковое представление объекта в указанном радиусе.

Метод toString() анализирует свой первый аргумент и пытается вернуть строку
представление в указанном основании (основание). Для радиксов выше 10 буквы алфавит обозначают цифры более 9. Например, для шестнадцатеричных чисел (база 16) используются a через f.

"для шестнадцатеричных чисел (база 16), используются a через f.

См. ссылку: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString.