【问题标题】:Buffer to base64 | Node.js缓冲到 base64 |节点.js
【发布时间】:2017-08-30 03:56:32
【问题描述】:

我有一个缓冲区,其中填充了一堆 base64 字符串。我想要一种方法来解码这些字符串并能够读取该缓冲区中的所有 base64 字符串。

const slugId1 = 'YriU6QbcQj6xtdUUosJTxA==';
const slugId2 = 'Su7Zvq1vRca/teTNfEmfNQ==';
const SLUGID_SIZE = 16;

let buffer = Buffer.alloc(SLUGID_SIZE * 2);

buffer.write(slugId1, 0, SLUGID_SIZE, 'base64');
buffer.write(slugId2, SLUGID_SIZE, SLUGID_SIZE, 'base64');

console.log(buffer.toString('base64', 0, SLUGID_SIZE));
console.log(buffer.toString('base64', SLUGID_SIZE, SLUGID_SIZE));

我得到了什么:

YriU6QbcQj6xtdUUosJTxA==

我期望得到什么:

YriU6QbcQj6xtdUUosJTxA==
Su7Zvq1vRca/teTNfEmfNQ==

感谢任何帮助。

【问题讨论】:

  • buffer.toString 第二个和第三个参数是startend - 给定相同的开始和结束值,结果当然是零长度

标签: javascript node.js encoding base64 buffer


【解决方案1】:

试试这个

const slugId1 = 'YriU6QbcQj6xtdUUosJTxA==';
const slugId2 = 'Su7Zvq1vRca/teTNfEmfNQ==';
const SLUGID_SIZE = 16;

let buffer = Buffer.alloc(SLUGID_SIZE * 2);

buffer.write(slugId1, 0, SLUGID_SIZE, 'base64');
buffer.write(slugId2, SLUGID_SIZE, SLUGID_SIZE, 'base64');

console.log(buffer.toString('base64', 0, SLUGID_SIZE));
console.log(buffer.toString('base64', SLUGID_SIZE, SLUGID_SIZE * 2));

buffer.toString() - 第三个参数不是长度,它是结束偏移量。

【讨论】:

  • buffer.write() - third argument is not length, it is end offset - 不,写它是一个长度 - 见documentation - 你实际上可以做buffer.write(slugId2, SLUGID_SIZE, 'base64'); - 因为长度默认为buffer.length - 偏移量 - 在这种情况下,它将是 SLUGID_SIZE
  • 是的,做到了。感谢您的快速回复!
猜你喜欢
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多