在Javascript中按字节分组base64->缓冲区十六进制字符串?
Posted
技术标签:
【中文标题】在Javascript中按字节分组base64->缓冲区十六进制字符串?【英文标题】:Grouping a base64->buffer hex string by bytes in Javascript? 【发布时间】:2022-01-18 06:40:15 【问题描述】:我正在尝试获取 Base64 字符串,将其转换为十六进制字符串并按字节对输出进行分组。
我希望 console.log(bufferString) 的输出是:
03 67 00 cf 04 68 61 00 ff 01 2d
但我被这个输出卡住了:
036700cf04686100ff012d
到目前为止我已经得到了什么......
let request =
"PayloadData": "A2cAzwRoYQD/AS0=",
"FPort": 10
let buffer = Buffer.from(request.PayloadData, 'base64');
let bufferString = buffer.toString('hex');
console.log(bufferString)
【问题讨论】:
【参考方案1】:您可以使用atob()
来做到这一点,然后将每个字符拆分为一个数组,将数组的每个元素映射到一个十六进制值,然后用空格将其重新连接起来。
更多信息在这里:https://developer.mozilla.org/en-US/docs/Web/API/atob
参见下面的 sn-p。
const output =
const fx =
encodeB64String: string => btoa(string),
decodeB64String: b64String => atob(b64String),
b64ToBytes: b64String => fx.decodeB64String(b64String)
.split(``)
.map(el => el.charCodeAt(0).toString(16).padStart(2, `0`))
.join(` `),
bytesToB64: bytes => fx.encodeB64String(bytes
.split(` `)
.map(el => String.fromCharCode(parseInt(el, 16)))
.join(``))
let request =
"PayloadData": "A2cAzwRoYQD/AS0=",
"FPort": 10
console.log(
opExample: fx.b64ToBytes(request.PayloadData)
);
output.inputString = `Hello World!`;
output.b64String = fx.encodeB64String(output.inputString);
output.b64ToBytes = fx.b64ToBytes(output.b64String);
output.bytesToB64 = fx.bytesToB64(output.b64ToBytes);
output.decodedString = fx.decodeB64String(output.bytesToB64);
console.log(output);
【讨论】:
以上是关于在Javascript中按字节分组base64->缓冲区十六进制字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaScript 中使用字节数组将字符串转换为 base64 编码?