Number.prototype.toHexString

数値(num)から4桁のゼロ埋めされた16進文字列が欲しい場合に

var num = 123;
var rv = ("000" + num.toString(16)).slice(-4);

alert( rv ); // "007b"

と毎回書くのもアレなので、こんな感じに書けるといいんじゃないでしょうか。

alert( (123).toHexString(4) ); // "007b"

実装してみました。

//{@prototype
(function(_DEC2HEX) {

// create HEX2 cache
for (var i = 0x100; i < 0x200; ++i) {
    _DEC2HEX[i - 0x100] = i.toString(16).slice(-2);
}

Number.prototype.toHexString = function(n) { // @param Number(= 2): digits. 1 ~ 8
                                             // @return String: HexDigitString
    //  [1][omit arg]   console.log(   (1).toHexString()  ) -> "01"
    //  [2][n = 1]      console.log(   (1).toHexString(1) ) ->  "1"
    //  [3][n = 2]      console.log( (255).toHexString(2) ) -> "ff"
    //  [4][n = 8]      console.log( (255).toHexString(8) ) -> "000000ff"
    //  [5][Math.floor] console.log( (1.1).toHexString(2) ) -> "01"
    //  [6][Math.abs]   console.log(  (-1).toHexString(2) ) -> "01"

    var val = (this < 0 ? -this : this) | 0,
        digit = (n === void 0 || n <= 0) ? 2 : n;

    if (digit === 2) {
        return _DEC2HEX[val & 0xff]; // use cached string
    }
    return ("0000000" + val.toString(16)).slice(-digit);
};

})(Number.prototype._DEC2HEX = {});
//}@prototype

小数点以下を切り捨て、負の数値は正の数値として処理した16進数文字列を返します。
先頭に"0x"は付きません。toHexString(n) の n で指定された長さまでゼロフィルを行います。
結果の文字列の長さが n より長い場合は、下 n 桁の文字列を返します(上位の桁を切り落とします)。n は省略可能です。省略した場合は n = 2 を指定した場合と同じ結果になります。n に 1以下の値や無効な値を指定すると n = 2 と同じ結果になります。

n = 2 の場合に限り、予め作り貯めておいた Hash ( Number.prototype._DEC2HEX ) から文字列を検索し、わりと素早く結果を返す気がします。
あと、Number.prototype._DEC2HEX は他の処理からも使いまわす予定なので、Number.prototype にくっつけてます。

日本語の説明を読むよりも、コードを読んだほうが簡単ですね!

Number.prototype.toHexString - jsdo.it - share JavaScript, HTML5 and CSS