从节点文档中:https://nodejs.org/api/buffer.html#buffer_buf_lastindexof_value_byteoffset_encoding
const buf = Buffer.from('this buffer is a buffer');
console.log(buf.lastIndexOf('buffer'));
// Prints: 17
这对我来说很有意义,但是这些没有:
console.log(buf.lastIndexOf('buffer', 5));
// Prints: 5
console.log(buf.lastIndexOf('buffer', 4));
// Prints: -1
为什么
('buffer', 5)
的索引不为17?为什么索引('buffer', 4)
-1而不是17?节点文档说:
byteOffset:在
buf
中开始搜索的位置。如果为负,则从buf的末端开始计算偏移量。默认值:buf.length-1。默认值
buf.length - 1
表示它将向后搜索Buffer,这将解释lastIndexOf('buffer', 5) = 5
,但不会解释lastIndexOf('buffer', 4) = -1
。 最佳答案
搜索从指定的索引开始,然后从该索引开始工作。因此,在您的示例中,当offsetIndex为5
时,它将找到第一个缓冲区(因为它是从右到左搜索)。但是,当您指定4
时,该索引的左侧不再有“缓冲区”出现,因此它返回-1。
关于node.js - Node Buffer.lastIndexOf byteOffset如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60498403/