JSFiddle - React, Tailwind, and code Playground
by PiereDome
JavaScript
//Base64 encoder/decoder
var indexTable = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var bitPattern = '',
count = 0,
base64 = '';
//length = input.length + (input.length + 1) % 3;
function getBinary(char) {
if (char.charCodeAt(0)) {
temp = char.charCodeAt(0).toString(2);
while (temp.length < 8) {
temp = 0 + temp;
}
}
return temp;
}
function encode(input) {
var output = '';
for (var i = 0; i < input.length; i++) {
bitPattern += getBinary(input.substr(i, 1), 8);
}
for (var i = 0; i < bitPattern.length; i += 6) {
var bit = bitPattern.substr(i, 6);
while (bit.length < 6) {
bit += '00';
}
var index = (parseInt(bit, 2));
output += indexTable[index];
}
while (output.length % 4) {
output += '=';
}
return output;
}
function decode(input) {
var output = '',
bitPattern = '';
for (var i = 0; i < input.length; i++) {
var index = indexTable.indexOf(input.substr(i, 1));
if(index === -1){
index = 0;
}
var temp = index.toString(2);
while (temp.length < 6) {
temp = 0 + temp;
}
bitPattern += temp;
}
for (var i = 0; i < bitPattern.length; i += 8) {
var bit = bitPattern.substr(i,8);
while(bit.length<8){
bit += 0;
}
output += (String.fromCharCode(parseInt(bit,2)));
}
return output;
}
var input = prompt('Please input string to encode');
alert(encode(input));
var input = prompt('Please input string to decode');
alert(decode(input));