123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /*--
- Copyright 2009-2010 by Stefan Rusterholz.
- All rights reserved.
- You can choose between MIT and BSD-3-Clause license. License file will be added later.
- --*/
- /**
- * mixin cc.Codec.Base64
- */
- cc.Codec.Base64 = {name:'Jacob__Codec__Base64'};
- cc.Codec.Base64._keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
- /**
- * <p>
- * cc.Codec.Base64.decode(input[, unicode=false]) -> String (http://en.wikipedia.org/wiki/Base64).
- * </p>
- * @function
- * @param {String} input The base64 encoded string to decode
- * @return {String} Decodes a base64 encoded String
- * @example
- * //decode string
- * cc.Codec.Base64.decode("U29tZSBTdHJpbmc="); // => "Some String"
- */
- cc.Codec.Base64.decode = function Jacob__Codec__Base64__decode(input) {
- var output = [],
- chr1, chr2, chr3,
- enc1, enc2, enc3, enc4,
- i = 0;
- input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
- while (i < input.length) {
- enc1 = this._keyStr.indexOf(input.charAt(i++));
- enc2 = this._keyStr.indexOf(input.charAt(i++));
- enc3 = this._keyStr.indexOf(input.charAt(i++));
- enc4 = this._keyStr.indexOf(input.charAt(i++));
- chr1 = (enc1 << 2) | (enc2 >> 4);
- chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
- chr3 = ((enc3 & 3) << 6) | enc4;
- output.push(String.fromCharCode(chr1));
- if (enc3 != 64) {
- output.push(String.fromCharCode(chr2));
- }
- if (enc4 != 64) {
- output.push(String.fromCharCode(chr3));
- }
- }
- output = output.join('');
- return output;
- };
- /**
- * <p>
- * Converts an input string encoded in base64 to an array of integers whose<br/>
- * values represent the decoded string's characters' bytes.
- * </p>
- * @function
- * @param {String} input The String to convert to an array of Integers
- * @param {Number} bytes
- * @return {Array}
- * @example
- * //decode string to array
- * var decodeArr = cc.Codec.Base64.decodeAsArray("U29tZSBTdHJpbmc=");
- */
- cc.Codec.Base64.decodeAsArray = function Jacob__Codec__Base64___decodeAsArray(input, bytes) {
- var dec = this.decode(input),
- ar = [], i, j, len;
- for (i = 0, len = dec.length / bytes; i < len; i++) {
- ar[i] = 0;
- for (j = bytes - 1; j >= 0; --j) {
- ar[i] += dec.charCodeAt((i * bytes) + j) << (j * 8);
- }
- }
- return ar;
- };
- cc.uint8ArrayToUint32Array = function(uint8Arr){
- if(uint8Arr.length % 4 != 0)
- return null;
- var arrLen = uint8Arr.length /4;
- var retArr = window.Uint32Array? new Uint32Array(arrLen) : [];
- for(var i = 0; i < arrLen; i++){
- var offset = i * 4;
- retArr[i] = uint8Arr[offset] + uint8Arr[offset + 1] * (1 << 8) + uint8Arr[offset + 2] * (1 << 16) + uint8Arr[offset + 3] * (1<<24);
- }
- return retArr;
- };
|