2013-06-20 2 views

ответ

5

Наиболее очевидным способом было бы проверить, если это только один символ, и если да, то добавьте ноль перед ним:

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); 
} 

Но это слишком сложно; Я определенно придерживаюсь первого решения.

+0

Я забыл я задал этот вопрос, и в основном реализован тот же решение, которое вы имели здесь. Тем не менее спасибо – user1754493

2
function d2h(d) { 
    var h = (+d).toString(16); 
    return h.length === 1 ? '0' + h : h; 
} 

См. DEMO.

+0

+1 как промежуточная точка между опциями icktoofay, хотя я бы написал '(h.length <2? '0': '') + h'. Личное предпочтение. – RobG

+0

Спасибо, см. Комментарий выше на icktoofay – user1754493

0

Это работает для больших чисел.

function d2h(d) { 
    var h = (d).toString(16); 
    return h.length % 2 ? '0' + h : h; 
} 
0

String.padStart Использование:

(d).toString(16).padStart(2, '0') 
Смежные вопросы