近況です
暇すぎる
function btoa(bin){ //Base64テーブル //英(大|小)文字&数字&記号二種(+/) var table = 'ABCDEFGHJIKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' var res = '' while(bin.length !== 0){ //24bitごとに区切る var chunk = bin.slice(0, 3) var bits = 0 for(var i = 0; i < chunk.length; i += 1){ bits += chunk.charCodeAt(i) << 16 - (8 * i) } //出力文字数は入力+1 var outlen = chunk.length + 1 //6bitごとに区切ってテーブルを元に符号化 for(var i = 0; i < outlen; i += 1){ res += table.charAt(bits >> 18 - (6 * i) & 63) } //パディング for(var i = 0; i < 4 - outlen; i += 1){ res += '=' } bin = bin.slice(3) } return res }; function atob(asc){ //パディングの除去 asc = asc.replace(/=/g,'') var table = 'ABCDEFGHJIKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' var res = '' while(asc.length !== 0){ //24bitごとに区切る var chunk = asc.slice(0, 4) var bits = 0 //テーブルを元に復号化 for(var i = 0; i < chunk.length; i += 1){ bits += table.indexOf(chunk.charAt(i)) << 18 - (6 * i) } //符号化の逆なので-1 var outlen = chunk.length - 1 //8bitごとに区切って元のデータに戻す for(var i = 0; i < outlen; i += 1){ res += String.fromCharCode(bits >> 16 - (8 * i) & 255) } asc = asc.slice(4) } return res }; console.log(btoa('nk0t')) console.log(atob('bmswdA==')) console.log('nk0t' === atob(btoa('nk0t')))
大体古いIEにatobとbtoaが無いのが悪いし古いIEを使わせられる環境が悪いし金かかるOSは仕方ないとは思うが(仕方なくはない)ブラウザくらい入れ替えろという話