美文网首页
Buffer 类型

Buffer 类型

作者: 梁坤同学 | 来源:发表于2020-02-10 22:14 被阅读0次

    类型介绍

    1. JavaScript 语言没有读取或操作二进制数据流的机制
    2. Node.js 中引入了 Buffer 类型是我们可以操作 TCP流 或 文件流
    3. Buffer 类型的对象类似于整数数组,但 Buffer 的大小是固定的、且在 V8 对外分配物理内存。Buffer 的大小在被创建时确定,且无法调整。(buf.length 是固定的,不允许修改)
    4. Buffer 是全局的,所以使用的时候无需 require() 的方式来加载

    如何创建一个 Buffer 对象

    常用 API

    1. 创建一个 Buffer 对象
    // 1. 通过 Buffer.from() 创建一个 Buffer 对象
    
    // 1.1 通过一个字节数组来创建一个 Buffer 对象
    const array = [0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0xe4, 0xb8, 0x96, 0xe7, 0x95, 0x8c];
    const buf = Buffer.from(array);
    console.log(buf.toString('utf8')); // hello 世界
    
    // 1.2通过字符串来创建一个 Buffer 对象
    // Buffer.from(string[, encoding]);
    const buf = Buffer.from('你好世界! Hello World!')
    console.log(buf); // <Buffer e4 bd a0 e5 a5 bd e4 b8 96 e7 95 8c ef bc 81 20 48 65 6c 6c 6f 20 57 6f 72 6c 64 21>
    console.log(buf.toString()); // 你好世界! Hello World!
    
    1. 拼接多个 Buffer 对象为一个对象
    // Buffer.concat(list[, totalLength]);
    const bufferList = [];
    const buf = Buffer.concat(bufferList)
    
    1. 获取字符串对应的字节个数
    // Buffer.byteLength(string[, encoding]);
    
    const len = Buffer.byteLength('你好世界 hello world!', 'utf8');
    console.log(len);   // 25
    
    1. 判断一个对象是否是 Buffer 类型对象
    // Buffer.isBuffer(obj);
    // obj <object>
    // Returns: <boolean>
    // Returns true if obj is a Buffer, false otherwise.
    
    1. 获取 Buffer 中的某个字节
    // 根据索引获取 Buffer 中的某个字节(byte, octet)
    // buf[index]
    
    1. 获取 Buffer 对象中的字节的个数
    // buf.length
    注意:length 属性不可修改
    
    1. 已过时的 API
    // 以下 API 已全部过时
    new Buffer(array)
    new Buffer(buffer)
    new Buffer(arrayBuffer[, byteOffset [, length]])
    new Buffer(size)
    new Buffer(string[, encoding])
    

    Buffer 对象与编码

    Node.js 目前支持的编码如下:

    1. ascii
    2. utf8
    3. utf16le - ucs2 是 utf16le 的别名
    4. base64
    5. latin1 - binary 是 latin1 的别名
    6. hex - 用两位16进制来表示每个字节

    示例代码:

    const buf = Buffer.from('你好世界,Hello World!', 'utf8')
    
    console.log(buf.toString('hex'))
    console.log(buf.toString('base64'))
    console.log(buf.toString('utf8'))
    

    为什么会有 Buffer 类型?

    1. Buffer是用来临时存储一些数据(二进制数据)
    2. 当我们要把一大块数据从一个地方传输到另一个地方的时候,可以通过 BUffer 对象进行传输
    3. 通过 Buffer 每次可以传输小部分数据,直到所有数据都传输完毕

    相关文章

      网友评论

          本文标题:Buffer 类型

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