什么是buffer及buffer常用方法

作者:日期:2016-08-29 10:22:12 点击:330 buffer node

1. 什么是Buffer

  • 缓冲区Buffer是暂时存放输入输出数据的一段内存。

  • JS语言没有二进制数据类型,而在处理TCP和文件流的时候,必须要处理二进制数据。

  • NodeJS提供了一个Buffer对象来提供对二进制数据的操作

  • 是一个表示固定内存分配的全局对象,也就是说要放到缓存区中的字节数需要提前确定

  • Buffer好比由一个多位字节元素组成的数组,可以有效的在javascript中表示二进制数据

2. 什么是字节

  • 字节(Byte)是计算机存储时的一种计量单位,一个字节等于8位二进制数

  • 一个位就代表一个0或1,每8个位(bit)组成一个字节(Byte)

  • 字节是通过网络传输信息的单位

  • 一个字节最大值十进制数是255

    var sum =0;
    for(var i=0;i<8;i++){
    sum += Math.pow(2,i);
    }

3. 定义buffer的三种方式

  • 通过长度定义buffer

    new Buffer(size);
  • 通过数组定义buffer

    new Buffer(array);

    正常情况下为0-255之间;

  • 字符串创建

    new Buffer(str,[encoding]);

4.buffer常用方法

4.1 fill方法

  • 手动初始化,擦干净桌子,将buffer内容清0

    buffer.fill(0);

4.2 write方法

  • string, offset, length, encoding

    buffer.write('珠',0,3,'utf8');
    buffer.write('峰',3,3,'utf8'); //珠峰

4.3 toString方法

  • 将buffer转换成字符串类型 start end 是截取的buffer的长度

    buffer.toString('utf8',3,6)

4.4 slice方法

  • 截取buffer

    buffer.slice(0,4);
  • 截取乱码问题

    var StringDecoder  = require('string_decoder').StringDecoder;
    var sd = new StringDecoder;
    var buffer = new Buffer('珠峰');
    console.log(sd.write(buffer.slice(0,4)));
    console.log(sd.write(buffer.slice(4)));

4.5 copy方法

  • 复制Buffer 把多个buffer拷贝到一个大buffer上

    sourceBuffer.copy(targetBuffer,targetstart,sourcestart,sourceend);

4.6 concat方法

  • 拼接buffer

    Buffer.concat([buf1,buf2],length);

    实现concat方法

4.7 isBuffer

  • 判断是否是buffer
Buffer.isBuffer

4.8 length

  • 获取字节长度(显示是字符串所代表buffer的长度)
Buffer.byteLength("珠峰");
buffer.length;

5.进制转换

  • 将任意进制字符串转换为十进制

    • parseInt(“11”, 2); // 3 2进制转10进制

    • parseInt(“77”, 8); // 63 8进制转10进制

    • parseInt(“e7”, 16); //175 16进制转10进制

  • 将10进制转换为其它进制字符串

    • (3).toString(2)) // “11” 十进制转2进制

    • (17).toString(16) // “11” 十进制转16进制

    • (33).toString(32) // “11” 十提制转32进制

base64的转换

上一篇: 珠峰培训node培训之MongoDB+Express+Angular+Node+Bootstrap+Linux开发的爬虫

下一篇: web前端开发:require.js应用及模块化开发