【问题标题】:Grouping a base64->buffer hex string by bytes in Javascript?在Javascript中按字节分组base64->缓冲区十六进制字符串?
【发布时间】: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)

【问题讨论】:

    标签: javascript base64 hex buffer


    【解决方案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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2014-03-07
      • 2013-08-09
      相关资源
      最近更新 更多