У меня есть эта функция здесь:новообращенный десятичной в шестнадцатеричную отсутствует проложенный 0
function d2h(d) { return (+d).toString(16); }
Так сказать, я поставил d2h(15);
.
Это вернет f
. Мне нужно, чтобы он вернулся 0f
.
У меня есть эта функция здесь:новообращенный десятичной в шестнадцатеричную отсутствует проложенный 0
function d2h(d) { return (+d).toString(16); }
Так сказать, я поставил d2h(15);
.
Это вернет f
. Мне нужно, чтобы он вернулся 0f
.
Наиболее очевидным способом было бы проверить, если это только один символ, и если да, то добавьте ноль перед ним:
function d2h(d) {
var s = (+d).toString(16);
if(s.length < 2) {
s = '0' + s;
}
return s;
}
Менее очевидный путь будет таким:
function d2h(d) {
return (d/256 + 1/512).toString(16).substring(2, 4);
}
Но это слишком сложно; Я определенно придерживаюсь первого решения.
function d2h(d) {
var h = (+d).toString(16);
return h.length === 1 ? '0' + h : h;
}
См. DEMO.
+1 как промежуточная точка между опциями icktoofay, хотя я бы написал '(h.length <2? '0': '') + h'. Личное предпочтение. – RobG
Спасибо, см. Комментарий выше на icktoofay – user1754493
Это работает для больших чисел.
function d2h(d) {
var h = (d).toString(16);
return h.length % 2 ? '0' + h : h;
}
String.padStart
Использование:
(d).toString(16).padStart(2, '0')
Я забыл я задал этот вопрос, и в основном реализован тот же решение, которое вы имели здесь. Тем не менее спасибо – user1754493