【发布时间】:2018-04-15 18:53:20
【问题描述】:
在 node.js 中
const buffer = Buffer.from('000000a6', 'hex');
console.log(buffer); // <Buffer 00 00 00 a6>
const bufferString = buffer.toString();
const newBuffer = Buffer.from(bufferString);
console.log(newBuffer); // <Buffer 00 00 00 ef bf bd>
为什么先把buffer转成string,再把string转回buffer,新的buffer和原来的不一样?
我尝试了 toString('hex') toString('binary') 或其他编码,如 ascii 等。所有这些编码都改变了原始缓冲区。
buffer.toString(encode) 使用默认的encode utf8,Buffer.from(string, encode) 也使用默认的encode utf8,还是有区别的。
如何将缓冲区转换为字符串,并将其转换回缓冲区与原始缓冲区完全相同?
PS:这个问题来自于我想将请求正文作为缓冲区发送时。我只是发送到服务器,但服务器获取。
PPS:服务器不在我的控制范围内。所以我不能使用 Buffer.from(string, 'hex') 来解析请求体 buffer.toString('hex')。
【问题讨论】: