README
Base64
Base64
编码
,解码
库;
适用场景
- 二进制数据与 Base64 互转
- 字符串与 Base64 互转
install
npm i @cnwhy/base64
为何重复造轮子?
- 需要单纯的Base64的库,而且能在浏览器上使用; (利用node的
Buffer
对像的方法出局) - 支持字符串; (
btoa
,atob
只支持 Latin1); Base64
编/解码本该与字符串无关, 但现有库几乎只支持字符串;- 能用上
Tree-shaking
, 项目一般只用需要(encode
或decode
), 我可不想copy代码; - javascript 字符串无损转换 (因为这一点, 现有库几乎全军覆没), 具体例子;
- 能应付异型
Base64
方案;
兼容性
通用, 对于不支持ArrayBuffer
的环境将会用Array
代替Uint8Array
.
使用
const { encode, decode, createEncode, createDecode } = require('@cnwhy/base64');
// import { encode, decode, createEncode, createDecode } from '@cnwhy/base64';
// 1. 字符串
let str = '中国𐄡美国';
let b64 = encode(str);
console.log(b64);
let _str = decode(b64).toString(); // 必须调用toString()方法还原为字符串.
console.log('string:', str === _str); // true
// 2. 字节数组
// let buffer = fs.readFileSync('./test.js');
let buffer = new Uint8Array([0,255,127,33,0,5]);
let fb64 = encode(buffer); // encode支持 Buffer , Stirng, Array<number>
let fu8arr = decode(fb64); // decode 返回Uint8Array对像
console.log('buffer:', Array.from(buffer).join() == Array.from(fu8arr).join());
// 3. 自定义 Base64 转换方法
// 自定义码表与补位符
const TABLE = 'xQh}s7*y~A|nkj4Bf%z1R,P+)mMS{(&EWCKegp6r!OX</LuY-l9^ZJ#cTU[vHda