function base64_decode(data){ |
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ; |
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,ac = 0,dec = "" ,tmp_arr = []; |
if (!data) { return data; } |
data += '' ; |
do { |
h1 = b64.indexOf(data.charAt(i++)); |
h2 = b64.indexOf(data.charAt(i++)); |
h3 = b64.indexOf(data.charAt(i++)); |
h4 = b64.indexOf(data.charAt(i++)); |
bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; |
o1 = bits >> 16 & 0xff; |
o2 = bits >> 8 & 0xff; |
o3 = bits & 0xff; |
if (h3 == 64) { |
tmp_arr[ac++] = String.fromCharCode(o1); |
} else if (h4 == 64) { |
tmp_arr[ac++] = String.fromCharCode(o1, o2); |
} else { |
tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); |
} |
} while (i < data.length); |
dec = tmp_arr.join( '' ); |
dec = utf8_decode(dec); |
return dec; |
} |