export const b2: string[] = '01'.split('') export const b16: string[] = '0123456789abcdef'.split('') export const b62: string[] = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('') export function encode(n: bigint, charset: string[]): string { const base = BigInt(charset.length) if (n == BigInt(0)) { return '0' } else { var xs = [] while (n > BigInt(0)) { xs.push(charset[Number(n % base)]) n = n / base } return xs.reverse().join('') } } export function decode(xs: string, charset: string[]): bigint { const base = BigInt(charset.length) return xs .split('') .reverse() .reduce((acc, x, i) => acc + (BigInt(charset.indexOf(x)) * (base ** BigInt(i))), BigInt(0)) }