DRYな備忘録

Don't Repeat Yourself.

Uint8Arrayをbase64文字列に変換

前回

これやったから。その逆。

まあ基本対応表持ってるしかねえかな、って思った

var mapReverse = {
    "000000":"A",
    "000001":"B",
// 中略
    "111101":"9",
    "111110":"+",
    "111111":"/",
    "":"="
};

// Uint8Arrayを作るのは上記エントリを参考のこと
var uint8arr = new Uint8Array(pool);

// convert Uint8Array to base64
var base64pool = [];
var setCount = Math.floor(uint8arr.length / 6);
for (var r = 0; r < setCount; r++) {
    var i = r * 6;
    var sets = Array.prototype.slice.call(uint8arr.subarray(i, i+6), 0).join("");
    base64pool.push(mapReverse[sets]);
}
console.log(base64pool.join(""));

雑感

""ってObjectのkeyに使えるんだなあ