阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js Buffer buf.lastIndexOf

      Node.js Buffer buf.lastIndexOf(value[, byteOffset][, encoding])版本历史

      版本变更
      v8.0.0The value can now be a Uint8Array.
      v6.0.0新增于: v6.0.0
      • value < string> | < Buffer> | < Uint8Array> | < integer> 要查找的值。
      • byteOffset < integer> buf 中开始查找的偏移量。默认为 buf.length- 1。
      • encoding < string> 如果 value 是字符串,则指定 value 的字符编码。默认为 ‘utf8’。
      • 返回: < integer> buf 中最后一次出现 value 的索引,如果 buf 没包含 value 则返回 -1。

      与 buf.indexOf() 的区别是,查找的是 ‘value’ 最后一次出现的索引,而不是首次出现。

      const buf = Buffer.from('this buffer is a buffer');
      
      console.log(buf.lastIndexOf('this'));
      // 输出: 0
      console.log(buf.lastIndexOf('buffer'));
      // 输出: 17
      console.log(buf.lastIndexOf(Buffer.from('buffer')));
      // 输出: 17
      console.log(buf.lastIndexOf(97));
      // 输出: 15(97 是 'a' 的十进制 ASCII 值)
      console.log(buf.lastIndexOf(Buffer.from('yolo')));
      // 输出: -1
      console.log(buf.lastIndexOf('buffer', 5));
      // 输出: 5
      console.log(buf.lastIndexOf('buffer', 4));
      // 输出: -1
      
      const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'utf16le');
      
      console.log(utf16Buffer.lastIndexOf('\u03a3', undefined, 'utf16le'));
      // 输出: 6
      console.log(utf16Buffer.lastIndexOf('\u03a3', -5, 'utf16le'));
      // 输出: 4
      

      如果 value 不是一个字符串, 数字, 或者 Buffer, 该方法会抛出一个 TypeError 异常, 如果 value 是一个数字, 它将会被强制转换成一个有效的 byte 值, 如果 value 是一个数值,则会被转换成介于 0 到 255 之间的整数值。

      如果 byteOffset 不是一个数值,则会被转换成数值。 如果转换后的值为 NaN,比如 {} 或 undefined,则会查找整个 buffer。 这与 String#lastIndexOf() 是一致的。

      const b = Buffer.from('abcdef');
      
      // 传入一个非法的数值。
      // 输出:2(相当于查找 99 或 'c')
      console.log(b.lastIndexOf(99.9));
      console.log(b.lastIndexOf(256 + 99));
      
      // 传入被转换成 NaN 的 byteOffset。
      // 输出:1(查找整个 buffer)
      console.log(b.lastIndexOf('b', undefined));
      console.log(b.lastIndexOf('b', {}));
      
      // 传入被转换成 0 的 byteOffset。
      // 输出:-1(相当于传入 0)
      console.log(b.lastIndexOf('b', null));
      console.log(b.lastIndexOf('b', []));
      

      如果 value 是一个空字符串或空 Buffer,则返回 byteOffset。


      更多内容请参考:Node.js Buffer 缓冲器,或者通过 点击对应菜单 进行查看;


      目录
      本文目录
      目录