binary2ascii
Version:
binary2ascii
8 lines (7 loc) • 2.74 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../src/index.ts"],
"sourcesContent": ["'use strict'\r\n\r\n// Base64 character set (include extra '=')\r\nconst base64Chars =\r\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\r\n\r\n/**\r\n * binary to ascii (ArrayBuffer to base64 string)\r\n * @returns base64 string\r\n */\r\nconst binary2ascii = (bytes: ArrayBuffer) => {\r\n const uint8Arr = new Uint8Array(bytes)\r\n const len = uint8Arr.length\r\n const base64Arr = []\r\n const extraBytes = len % 3\r\n const end = len - extraBytes\r\n\r\n let i = -1\r\n while (++i < end) {\r\n const code1 = uint8Arr[i]\r\n const code2 = uint8Arr[++i]\r\n const code3 = uint8Arr[++i]\r\n\r\n base64Arr.push(\r\n base64Chars[code1 >>> 2], // First upper 6 bits\r\n base64Chars[((code1 & 0b11) << 4) | (code2 >>> 4)], // First lower 2 bits and second upper 4 bits\r\n base64Chars[((code2 & 0b1111) << 2) | (code3 >>> 6)], // Second lower 4 bits and third upper 2 bits\r\n base64Chars[code3 & 0b111111] // Third lower 6 bits\r\n )\r\n }\r\n\r\n if (extraBytes === 1) {\r\n const code = uint8Arr[i]\r\n\r\n base64Arr.push(\r\n base64Chars[code >>> 2],\r\n base64Chars[(code & 0b11) << 4], // Only one character needs to be converted for extra 1 byte\r\n '=',\r\n '='\r\n )\r\n } else if (extraBytes === 2) {\r\n const code1 = uint8Arr[i]\r\n const code2 = uint8Arr[++i]\r\n\r\n base64Arr.push(\r\n base64Chars[code1 >>> 2],\r\n base64Chars[((code1 & 0b11) << 4) | (code2 >>> 4)],\r\n base64Chars[(code2 & 0b1111) << 2], // Only two characters need to be converted for additional 2 bytes\r\n '='\r\n )\r\n }\r\n\r\n return base64Arr.join('')\r\n}\r\n\r\nexport { binary2ascii }\r\n"],
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAGA,MAAMI,EACJ,oEAMIF,EAAgBG,GAAuB,CAC3C,MAAMC,EAAW,IAAI,WAAWD,CAAK,EAC/BE,EAAMD,EAAS,OACfE,EAAY,CAAC,EACbC,EAAaF,EAAM,EACnBG,EAAMH,EAAME,EAElB,IAAI,EAAI,GACR,KAAO,EAAE,EAAIC,GAAK,CAChB,MAAMC,EAAQL,EAAS,GACjBM,EAAQN,EAAS,EAAE,GACnBO,EAAQP,EAAS,EAAE,GAEzBE,EAAU,KACRJ,EAAYO,IAAU,GACtBP,GAAcO,EAAQ,IAAS,EAAMC,IAAU,GAC/CR,GAAcQ,EAAQ,KAAW,EAAMC,IAAU,GACjDT,EAAYS,EAAQ,GACtB,CACF,CAEA,GAAIJ,IAAe,EAAG,CACpB,MAAMK,EAAOR,EAAS,GAEtBE,EAAU,KACRJ,EAAYU,IAAS,GACrBV,GAAaU,EAAO,IAAS,GAC7B,IACA,GACF,CACF,SAAWL,IAAe,EAAG,CAC3B,MAAME,EAAQL,EAAS,GACjBM,EAAQN,EAAS,EAAE,GAEzBE,EAAU,KACRJ,EAAYO,IAAU,GACtBP,GAAcO,EAAQ,IAAS,EAAMC,IAAU,GAC/CR,GAAaQ,EAAQ,KAAW,GAChC,GACF,CACF,CAEA,OAAOJ,EAAU,KAAK,EAAE,CAC1B",
"names": ["src_exports", "__export", "binary2ascii", "__toCommonJS", "base64Chars", "bytes", "uint8Arr", "len", "base64Arr", "extraBytes", "end", "code1", "code2", "code3", "code"]
}