UNPKG

hck2-dev

Version:

Development Tools For HCK2

26 lines (21 loc) 843 B
/* How To Use b64Encode('✓ à la mode'); // "4pyTIMOgIGxhIG1vZGU=" b64Encode('\n'); // "Cg==" b64Decode('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode" b64Decode('Cg=='); // "\n" */ function b64Encode(str) { // first we use encodeURIComponent to get percent-encoded UTF-8, // then we convert the percent encodings into raw bytes which // can be fed into btoa. return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) { return String.fromCharCode('0x' + p1); })); } function b64Decode(str) { // Going backwards: from bytestream, to percent-encoding, to original string. return decodeURIComponent(atob(str).split('').map(function(c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }).join('')); }