将十进制转换为十六进制缺少填充0

时间:2013-06-20 02:21:53

标签: javascript

我在这里有这个功能:

function d2h(d) { return (+d).toString(16); }

所以说我放d2h(15);

这将返回f。我需要它来返回0f

4 个答案:

答案 0 :(得分: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);
}

但这太棘手了;我绝对坚持第一个解决方案。

答案 1 :(得分:4)

使用String.padStart

(d).toString(16).padStart(2, '0')

答案 2 :(得分:2)

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

请参阅DEMO

答案 3 :(得分:0)

这也适用于大数字。

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