var base64EncodeChars = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ " ;
var base64DecodeChars = new Array (
- 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
- 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
- 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , 62 , - 1 , - 1 , - 1 , 63 ,
52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
- 1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 ,
15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , - 1 , - 1 , - 1 , - 1 , - 1 ,
- 1 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 ,
41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , - 1 , - 1 , - 1 , - 1 , - 1 );
function base64encode (str) {
c1 = str. charCodeAt (i ++ ) & 0xff ;
out += base64EncodeChars. charAt (c1 >> 2 );
out += base64EncodeChars. charAt ((c1 & 0x3 ) << 4 );
c2 = str. charCodeAt (i ++ );
out += base64EncodeChars. charAt (c1 >> 2 );
out += base64EncodeChars. charAt (((c1 & 0x3 ) << 4 ) | ((c2 & 0xF0 ) >> 4 ));
out += base64EncodeChars. charAt ((c2 & 0xF ) << 2 );
c3 = str. charCodeAt (i ++ );
out += base64EncodeChars. charAt (c1 >> 2 );
out += base64EncodeChars. charAt (((c1 & 0x3 ) << 4 ) | ((c2 & 0xF0 ) >> 4 ));
out += base64EncodeChars. charAt (((c2 & 0xF ) << 2 ) | ((c3 & 0xC0 ) >> 6 ));
out += base64EncodeChars. charAt (c3 & 0x3F );
function base64decode (str) {
c1 = base64DecodeChars[str. charCodeAt (i ++ ) & 0xff ];
} while (i < len && c1 == - 1 );
c2 = base64DecodeChars[str. charCodeAt (i ++ ) & 0xff ];
} while (i < len && c2 == - 1 );
out += String. fromCharCode ((c1 << 2 ) | ((c2 & 0x30 ) >> 4 ));
c3 = str. charCodeAt (i ++ ) & 0xff ;
c3 = base64DecodeChars[c3];
} while (i < len && c3 == - 1 );
out += String. fromCharCode (((c2 & 0XF ) << 4 ) | ((c3 & 0x3C ) >> 2 ));
c4 = str. charCodeAt (i ++ ) & 0xff ;
c4 = base64DecodeChars[c4];
} while (i < len && c4 == - 1 );
out += String. fromCharCode (((c3 & 0x03 ) << 6 ) | c4);
for (i = 0; i < len; i ++ ) {
if ((c >= 0x0001 ) && (c <= 0x007F )) {
out += String. fromCharCode ( 0xE0 | ((c >> 12 ) & 0x0F ));
out += String. fromCharCode ( 0x80 | ((c >> 6 ) & 0x3F ));
out += String. fromCharCode ( 0x80 | ((c >> 0 ) & 0x3F ));
out += String. fromCharCode ( 0xC0 | ((c >> 6 ) & 0x1F ));
out += String. fromCharCode ( 0x80 | ((c >> 0 ) & 0x3F ));
case 0 : case 1 : case 2 : case 3 : case 4 : case 5 : case 6 : case 7 :
char2 = str. charCodeAt (i ++ );
out += String. fromCharCode (((c & 0x1F ) << 6 ) | (char2 & 0x3F ));
// 1110 xxxx 10xx xxxx 10xx xxxx
char2 = str. charCodeAt (i ++ );
char3 = str. charCodeAt (i ++ );
out += String. fromCharCode (((c & 0x0F ) << 12 ) |
function CharToHex (str) {
var src = document. getElementById ( 'src' ).value;
document. getElementById ( 'dest' ).value = base64encode ( utf16to8 (src));
var src = document. getElementById ( 'src' ).value;
var opts = document. getElementById ( 'opt' );
document. getElementById ( 'dest' ).value = CharToHex ( base64decode (src));
document. getElementById ( 'dest' ).value = utf8to16 ( base64decode (src));
$(document). ready ( function ()
var src = document. getElementsByClassName ( 'src' );
for (var i = 0 ; i < src.length; i ++ )
src[i].innerHTML = utf8to16 ( base64decode (src[i].innerText));
src[i].style.display = " inline " ;