41 lines
767 B
JavaScript
41 lines
767 B
JavaScript
/* eslint-env browser */
|
|
|
|
/**
|
|
* @module binary
|
|
*/
|
|
|
|
import * as string from './string.js'
|
|
import * as globals from './globals.js'
|
|
|
|
export const BITS32 = 0xFFFFFFFF
|
|
export const BITS21 = (1 << 21) - 1
|
|
export const BITS16 = (1 << 16) - 1
|
|
|
|
export const BIT26 = 1 << 26
|
|
export const BIT32 = 1 << 32
|
|
|
|
/**
|
|
* @param {Uint8Array} bytes
|
|
* @return {string}
|
|
*/
|
|
export const toBase64 = bytes => {
|
|
let s = ''
|
|
for (let i = 0; i < bytes.byteLength; i++) {
|
|
s += string.fromCharCode(bytes[i])
|
|
}
|
|
return btoa(s)
|
|
}
|
|
|
|
/**
|
|
* @param {string} s
|
|
* @return {Uint8Array}
|
|
*/
|
|
export const fromBase64 = s => {
|
|
const a = atob(s)
|
|
const bytes = globals.createUint8ArrayFromLen(a.length)
|
|
for (let i = 0; i < a.length; i++) {
|
|
bytes[i] = a.charCodeAt(i)
|
|
}
|
|
return bytes
|
|
}
|