buffer

作者: hanxianshe_9530 | 来源:发表于2019-10-28 09:34 被阅读0次

    所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存。主要用于操作二进制数据流,其用法与数组非常相似。

    当字符串数据被存储入 Buffer 实例,或从 Buffer 实例中被提取时,可以指定一个字符编码。

    const buf = Buffer.from('hello world', 'ascii');
    
    console.log(buf.toString('hex'));
    // 打印: 68656c6c6f20776f726c64
    console.log(buf.toString('base64'));
    // 打印: aGVsbG8gd29ybGQ=
    
    console.log(Buffer.from('fhqwhgads', 'ascii'));
    // 打印: <Buffer 66 68 71 77 68 67 61 64 73>
    console.log(Buffer.from('fhqwhgads', 'utf16le'));
    // 打印: <Buffer 66 00 68 00 71 00 77 00 68 00 67 00 61 00 64 00 73 00>
    

    JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一个与String对等的全局构造函数Buffer来提供对二进制数据的操作。

    Bufffer是一个全局变量,因此无需使用require(‘buffer’).Buffer。

    Node.js 当前支持的部分字符编码有:

    • 'ascii' - 仅适用于 7 位 ASCII 数据。此编码速度很快,如果设置则会剥离高位。
    • 'utf8' - 多字节编码的 Unicode 字符。许多网页和其他文档格式都使用 UTF-8。
    • 'base64' - Base64 编码。
    • 'hex' - 将每个字节编码成两个十六进制的字符。

    为了使 Buffer 实例的创建更可靠且更不容易出错,各种形式的 new Buffer() 构造函数都已被弃用,且改为单独的 Buffer.from()Buffer.alloc()Buffer.allocUnsafe() 方法。

    Buffer 与迭代器

    Buffer 实例可以使用 for..of 语法进行迭代:

    const buf = Buffer.from([1, 2, 3]);
    
    for (const b of buf) {
      console.log(b);
    }
    // 打印:
    //   1
    //   2
    //   3
    

    此外,buf.values()buf.keys()、和 buf.entries() 方法也可用于创建迭代器。

    相关文章

      网友评论

          本文标题:buffer

          本文链接:https://www.haomeiwen.com/subject/byyvvctx.html