Skip to content

Instantly share code, notes, and snippets.

@dolpen
Created February 1, 2015 05:34
Show Gist options
  • Select an option

  • Save dolpen/b8ec6fa6cc0965adddac to your computer and use it in GitHub Desktop.

Select an option

Save dolpen/b8ec6fa6cc0965adddac to your computer and use it in GitHub Desktop.
window.base32 = (function () {
var b32 = function () {
this.map = {};
this.reverse = {};
for(var i = 0;i<32;i++){
var str = '';
for(var k =4;k>=0;k--){
str += (i&(1 << k))?'1':'0';
}
this.map[this.chars[i]]=str;
this.reverse[str]=this.chars[i];
}
};
b32.prototype = {
chars : '0123456789abcdefghijklmnopqrstuv',
fromBinary: function (s) {
var pad = '';
var ret = '';
for (var i = 0, z = (5 - s.length % 5) % 5; i < z; i++)pad += '0';
var seed = pad + s;
for (var k = 0, x = seed.length / 5; k < x; k++) {
ret+=this.reverse[seed.substr(k*5,5)];
}
return ret;
},
toBinary: function (s) {
var ret = '';
for (var i = 0, z = s.length; i < z; i++){
ret+=this.map[s[i]];
}
return ret.replace(/^0*/,'');
}
};
return new b32();
})();
window.onload = function(){
var bin = '0001010110010001010100010010101001010101';
var b32str = base32.fromBinary('1'+bin);
var bin2 = base32.toBinary(b32str).substr(1);
console.log(bin);
console.log(b32str);
console.log(bin2);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment