如何在 node.js 中将位字符串转换为 base64?
Posted
技术标签:
【中文标题】如何在 node.js 中将位字符串转换为 base64?【英文标题】:How to convert a bit string to base64 in node.js? 【发布时间】:2021-11-09 20:36:25 【问题描述】:我有一个想要转换为 base64 的位字符串,但它看起来没有一个本地函数可以执行此操作,我也找不到节点模块。 ):
输入:100110110101000110100011011001100010110100011011001100100110100011000001100000110000011000001100001001010100111110000011001111100101010011111010011100010110001001001001100000110100111010010100111110000111001000100000110001001000101100111110011001001001101011010001011001001101001010000011000100100100110000011010011
输出:该等效二进制值的 base64 表示
也许更好的问题是如何将位串转换为缓冲区?不确定
【问题讨论】:
位字符串不是 nodejs 有任何原生支持的东西。您将不得不自己解析/转换它,或者找到一个库来做到这一点。 【参考方案1】:正如您所猜测的,主要是将字符串转换为更容易转换为 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);
【讨论】:
以上是关于如何在 node.js 中将位字符串转换为 base64?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Node.js 中将 NTLM 凭据转换为 Kerberos 令牌
在node.js和GraphicsMagick中将tiff转换为jpeg
如何在 Node JS 中将原始 PCM 流转换为 Discord 机器人的 opus 或 wav 流?