nodejs 之 buffer module

/**
   JavaScript适合处理Unicode编码数据,但对二进制数据的处理并不友好
   所以处理TCP流或文件系统时,对八位字节流的处理很有必要
   Node有几个用于处理,创建和消耗八位字节流的方法
   原始数据存放在一个Buffer实例中,一个Buffer类似一个整数数组,但是它的内存
   分配在V8堆栈外。一个Buffer的大小是不能更改的。
   处理的编码类型有:ascii,utf8,utf16le,ucs2(utf16le的别名),base64,binary,hex
   Buffer为全局元素,直接new Buffer()就得到一个Buffer实例
*/

//new Buffer(size)得到一个4字节的buffer(缓存)
 var buffer1 = new Buffer(4);

//new Buffer(array) 得到一个字节数组的buffer
 var buffer2 = new Buffer([]);

//new Buffer(str[, encoding])得到一个给定字符串,或编码的buffer
 var buffer3 = new Buffer('node.js');
 
 
//buf.write(string[, offset][, length][, encoding]);返回string的长度length
//buf,write(写到buffer的字符串,开始写的地方,写的长度,编码)
 len = buffer1.write('\u00bd+\u00bc=\u00be',0);
 //buffer1只有4个字节大,'\u00bd+\u00bc'大于4,'\u00bd+’小于4,只输出'\u00bd+‘大小为3
 console.log(len + 'bytes:' + buffer1.toString('utf8',0,len));
//buf.toString([encoding, ][start][,end]);
//buf.toString(编码,起始位置,结束位置)




//buf[index] 一个buffer相似数组也有index,0=<index<=255
var str = 'node.js';
var buffer4 = new Buffer(str.length);
for(var i=0;i<str.length;i++){
       buffer4[i] = str.charCodeAt(i);  //将str中的字符的unicode编码数据给buffer
    }
console.log(buffer4)


//Buffer.isBuffer(obj)  判断obj是否为一个Buffer
 console.log(Buffer.isBuffer(str))          //false,str为字符串
 console.log(Buffer.isBuffer(buffer4))      //true

//Buffer.byteLength(string[, encoding]) 得到string的大小(字节为单位)
  str = '\u00bd+\u00bc=\u00be';
  console.log(str +":"+ str.length +" characters,"+Buffer.byteLength(str,'utf8')+" bytes.");
 

//Buffer.concat(list[,totalLength])将多个buffer合并
//list为buffer数组,totalLength为合并buffer的个数
 var newbuf = Buffer.concat([buffer1,buffer4])
 console.log(newbuf)
 
 
//buf.length 得到一个buffer的长度
 console.log(buffer1.length);
 buffer1.write("some string",0,'ascii')
 console.log(buffer1.length);



//buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])

//buf.copy(复制目标,开始插入位置,复制开始位置,复制结束位置)

 var buffer5 = new Buffer(26);
 var buffer6 = new Buffer(26);
 for(var i=0;i<26;i++){
        buffer5[i] = i+97;
        buffer6[i] = 33;
     }
     buffer5.copy(buffer6,8,16,20)
  console.log(buffer6.toString('ascii'))
 

//buf.slice([start][, end]) 将buf进行分割,得到一个新的buffer
 console.log(buffer5.toString('ascii'));
 var sliceBuf = buffer5.slice(3,9);
 console.log(sliceBuf.toString('ascii'))


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值