我有这个代码:
const start = pos * 100;
const b = Buffer.alloc(99);
fs.readSync(logFD, b, 0, b.length, start);
console.log(String(b));
const j = JSON.parse(String(b).trim());
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
SyntaxError:JSON 中位置 15 处出现意外标记
问题可能是我的缓冲区中有空字节:
7b22 7022 3a37 3236 3736 2c22 6222 3a31
3837 7d00 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
Run Code Online (Sandbox Code Playgroud)
我不知道要读取多少字节,所以我必须读取超过阈值的数据,然后将其修剪下来。有什么方法可以在转换为字符串之前从缓冲区中删除空字节吗?
小智 5
所以我认为这有效:
const i = b.indexOf(0x00);
const nb = b.slice(0, i);
Run Code Online (Sandbox Code Playgroud)
我只是在十六进制 0x00 的第一个索引出现后删除