【发布时间】:2021-08-12 11:10:01
【问题描述】:
我需要将数据恢复到已调用 toString 的缓冲区。例如:
const buffer // I need this, or equivalent
const bufferString = buffer.toString() // This is all I have
node documentation 表示.toString() 默认为“utf8”编码,我可以使用Buffer.from(bufferString, 'utf8') 恢复它,但这不起作用,我得到不同的数据。 (在转换为字符串时可能会丢失一些数据,尽管文档似乎没有提到这一点)。
有谁知道为什么会发生这种情况或如何解决?
这是我必须重现的数据:
const intArr = [31, 139, 8, 0, 0, 0, 0, 0, 0, 0, 170, 86, 42, 201, 207, 78, 205, 83, 178, 82, 178, 76, 78, 53, 179, 72, 74, 51, 215, 53, 54, 51, 51, 211, 53, 49, 78, 50, 210, 77, 74, 49, 182, 208, 53, 52, 178, 180, 72, 75, 76, 52, 75, 180, 76, 50, 81, 170, 5, 0, 0, 0, 255, 255, 3, 0, 29, 73, 93, 151, 48, 0, 0, 0]
const buffer = Buffer.from(intArr) // The buffer I want!
const bufferString = buffer.toString() // The string I have!, note .toString() and .toString('utf8') are equivalent
const differentBuffer = Buffer.from(bufferString, 'utf8')
您可以通过执行以下操作从缓冲区中获取初始 intArr:
JSON.parse(JSON.stringify(Buffer.from(buffer)))['data']
编辑:有趣的是,在 differentBuffer 上调用 .toString() 会给出相同的初始字符串。
【问题讨论】:
标签: node.js buffer zlib bytebuffer