javascript - 如何在 node.js 中将位字符串转换为 base64?
问题描述
我有一个要转换为 base64 的位字符串,但看起来没有本地函数可以执行此操作,而且我也找不到节点模块。):
输入:100110110101000110100011011001100010110100011011001100100110100011000001100000110000011000001100001001010100111110000011001111100101010011111010011100010110001001001001100000110100111010010100111110000111001000100000110001001000101100111110011001001001101011010001011001001101001010000011000100100100110000011010011
输出:该等效二进制值的 base64 表示
也许更好的问题是如何将位字符串转换为缓冲区?没有把握
解决方案
正如您所猜测的,主要是将字符串转换为更容易转换为 base64 的字符串,然后再将其转换为 base64。
在下面的代码中,我们执行这些转换序列:
- 位字符串 -> BigInt -> 字节大小的整数数组 -> 二进制字符串 -> base64
- base64 -> 二进制字符串 -> 字节大小的位字符串数组 -> 位字符串
const encode = bitstr => {
const bytes = [];
// convert bit string to BigInt
let value = BigInt('0b' + bitstr);
// chop it up into bytes
while (value > 0n) {
bytes.unshift(Number(value & 0xffn));
value >>= 8n;
}
// convert to binary string and encode as base64
return btoa(String.fromCharCode.apply(null, bytes));
};
const decode = b64 => {
// decode base64 to binary string
const bstr = atob(b64);
// convert binary string to bit string
return new Array(bstr.length).fill(0).map(
(_,i) => bstr.charCodeAt(i).toString(2).padStart(8, i ? '0' : '')
).join('');
};
const bitstr = '100110110101000110100011011001100010110100011011001100100110100011000001100000110000011000001100001001010100111110000011001111100101010011111010011100010110001001001001100000110100111010010100111110000111001000100000110001001000101100111110011001001001101011010001011001001101001010000011000100100100110000011010011';
const encoded = encode(bitstr);
const decoded = decode(encoded);
console.log(bitstr);
console.log(encoded);
console.log(decoded);
推荐阅读
- c# - 我可以将 zip 对发送到 Google 的距离矩阵 API 吗?
- bash - Bash cat/echo 创建不同的文件
- javascript - 在 package.json 中设置环境变量以与电子重载一起使用?
- python - 我想知道是否有办法跳过特定的行,这样它就不会被执行
- sql - 如何从多个数据中选择一个数据(Oracle SQL)
- javascript - TypeScript:构造函数签名中的“keyof this”
- python - 用相同大小的小部件重复替换小部件 - 它是如何完成的?
- powershell - 如何使用 powershell 在远程计算机上获取进程模块,Get-Process -Module 仅提供给本地计算机
- cassandra - gremlin console - can not connect using cassandra config
- python-3.x - python - 如何在python的tkinter gui中的冒号后添加自动缩进功能?