0
base64 = {
/* convert data (an array of integers) to a base64 string. */
tobase64table : 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/',
base64pad : '=',
encode: function (data) {
var result = ;
var chrtable = base64.tobase64table. split();
var pad = base64.base64pad;
var length = data. length;
var i;
// convert every three bytes to 4 ascii characters.
for (i = 0; i < (length - 2); i += 3) {
result += chrtable[data[i] >> 2];
result += chrtable[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];
result += chrtable[((data[i+1] & 0x0f) << 2) + (data[i+2] >> 6)];
result += chrtable[data[i+2] & 0x3f];
}
// convert the remaining 1 or 2 bytes, pad out to 4 characters.
if (length%3) {
i = length - (length%3);
result += chrtable[data[i] >> 2];
if ((length%3) == 2) {
result += chrtable[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];
result += chrtable[(data[i+1] & 0x0f) << 2];
result += pad;
} else {
result += chrtable[(data[i] & 0x03) << 4];
result += pad + pad;
}
}
return result;
},
/* convert base64 data to a string */
tobinarytable : [
-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, 0,-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
],
decode: function (data, offset) {
offset = typeof(offset) != 'undefined' ? offset : 0;
var bintable = base64.tobinarytable;
var pad = base64.base64pad;
var leftbits = 0; // number of bits decoded, but yet to be appended
var leftdata = 0; // bits decoded, but yet to be appended
/* every four characters is 3 resulting numbers */
var data_length = data. indexof('=') - offset;
if (data_length < 0) data_length = data. length - offset;
var result_length = (data_length >> 2) * 3 + math. floor((data_length%4)/1.5);
var result = new array(result_length);
// convert one by one.
var idx = 0;
for (var i = offset; i < data. length; i++) {
var c = bintable[data. charcodeat(i) & 0x7f];
var padding = (data. charat(i)
pad);
// skip illegal characters and whitespace
if (c
-1) {
console.log("illegal character '" + data. charcodeat(i) + "'");
continue;
}
// collect data into leftdata, update bitcount
leftdata = (leftdata << 6) | c;
leftbits += 6;
// if we have 8 or more bits, append 8 bits to the result
if (leftbits >= 8) {
leftbits -= 8;
// append if not padding.
if (!padding)
result[idx++] = (leftdata >> leftbits) & 0xff;
leftdata &= (1 << leftbits) - 1;
}
}
// if there are any bits left, the base64 string was corrupted
if (leftbits)
throw {name: 'base64-error',
message: 'corrupted base64 string'};
return result;
}
};
niye çalışmıyor lan bu
Tümünü Göster