Возвращает ли .toString(16) строчный регистр?
При преобразовании десятичного числа в базу выше 10, используя .toString(base)
, кажется, что я всегда получаю строчную строчку. Могу ли я полагаться на это? Строка в верхнем регистре будет правильной, хотя для моей заявки потребуется преобразование.
Дополнительный кредит для ссылки на часть спецификации, которая определяет это (я искал и не мог ее найти) и для любых встречных примеров (браузеры, которые возвращают прописные буквы).
Пример:
(12648430).toString(16) // returns: "c0ffee". Not "C0FFEE"
Ответы
Ответ 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.