node.js buffer

1.Buffer类
    Buffer 与字符编码

Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。

    我们 再操作文件或者网路数据的时候,其实就是操作二进制数据流,Node为我门提供了一个更加方便的去操作这种数据流的类Buffer,他是一个全局的类。

    Buffer 类在 Node.js 中是一个全局变量,因此无需使用 require('buffer').Buffer

   1.new Buffer(size) 

    这个方法用来分配一个长度一个空间大小

    官方文档:

      size <integer> 新建的 Buffer 期望的长度

分配一个大小为 size 字节的新建的 Buffer。如果 size 大于 buffer.constants.MAX_LENGTH 或小于 0,则抛出 RangeError 错误。如果 size 为 0,则创建一个长度为 0 的 Buffer

var bf = new Buffer(5)
//输出内容
console.log(bf)
//<Buffer 00 00 00 00 00>
当我们未一个buffer对象分配空间大小之后,其长度是固定的,不能改变

    我们测试一下:

var bf = new Buffer(5)
//输出内容
console.log(bf)
//结果<Buffer 00 00 00 00 00>
bf[7] = 10;
console.log(bf)
//结果<Buffer 00 00 00 00 00>

       我们可以看出来bf对象我们初始给的长度是5,当我们修改bf[7]的值得的时候输出结果并未改变。接下来我们修改bf[1]:

var bf = new Buffer(5)
//输出内容
console.log(bf)
//结果<Buffer 00 00 00 00 00>
bf[1] = 10;
console.log(bf)
//结果<Buffer 00 0a 00 00 00>

    我们可以看出第二个元素(bf[1],bf下标为1的元素,下标从0开始,bf[1]也就是第二个)的值不是00,而是0a,0a是十六进制的10,这里输出的都是十六进制数据

    2.new Buffer(array)
var bf2= new Buffer([1,2,3])
console.log(bf2)
//结果:<Buffer 01 02 03>

    这种创建buffer对象的方式是进行声明并赋值,其长度也是不可改变的

    3.new Buffer(string,[encoding]);
    通过这种方式将字符串转成一个二进制的数据,后面编码默认的格式是‘utf-8
var bf3 =new Buffer('hahah','utf-8')
console.log(bf3)
//结果:<Buffer 68 61 68 61 68>
var bf3 =new Buffer('hahah','utf-8')
console.log(bf3)
//结果:<Buffer 68 61 68 61 68>
console.log('输出字节长度')
console.log(bf3.length)
//结果:输出字节长度
// 5
console.log('循环输出内容')
var str = ''
for (var i=0;i<bf3.length;i++){
    //如果不使用String.fromCharCode()将输出十六进制内容
    console.log(String.fromCharCode(bf3[i]));
    str+=String.fromCharCode(bf3[i]);
}
console.log('拼接后的数据')
console.log(str)
//循环输出内容
// h
// a
// h
// a
// h
//hahah
   2.Buffer对象其他操作的方法

        1.buf.write()

var str = 'haha'
console.log(new Buffer(str))
//结果:<Buffer 68 61 68 61>
var bf=new Buffer(5)
bf.write(str);
console.log(bf)
//结果:<Buffer 68 61 68 61 00>
//我们给bf对象的长度为5,str的字节长度为4,bf自动补充

var bf2=new Buffer(2)
bf2.write(str);
console.log(bf2)
//结果:<Buffer 68 61>
//我们给bf对象的长度为2,str的字节长度为4,bf自动截取

var bf3=new Buffer(5)
bf3.write(str,1)
console.log(bf3)
//结果:<Buffer 00 68 61 68 61>
//我们给了bf3两个参数,str和偏移量1,bf3从下标为1开始写入

var bf3=new Buffer(5)
bf3.write(str,1,2)
console.log(bf3)
//结果:<Buffer 00 68 61 00 00>
//我们给了bf3三个个参数,
// str和偏移量1以及一个长度(也就是像bf3里面写入多少位字符),
// bf3从下标为1开始写入,写入2位
    几个常用的buffer方法官方文档




    这里不再针对方法陈述,献上文档地址http://nodejs.cn/api/buffer.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值