nodeJs的Buffer操作
再nodejs里,很多类是引入模块才能使用,Buffer是一个全局类,他不需要require引入
Buffer有三种构造函数
//1.在构造函数传一个数字,规定buffer的长度。默认全是16进制的0
var bf = new Buffer(size); //2.传一个数组给buffer
var bf = new Buffer(array]); //3.传入一个字符串和编码格式,编码格式可以省略
var bf = new Buffer(str,[encoding]);
buffer与字符串的区别
buffer里存的是16进制数字,并且不同的字符的长度是不同的,因此buffer的长度是按照字节长度计算的
var str = '你是谁';
console.log(str.length); //
var bf = new Buffer(str);
console.log(bf.length);//
字符串有一些操作的方法,indexOf()等,Buffer没有,只有一个取出指定位置处理数据的方法slice,和String的slice一样,并且修改slice取出的数据,buffer也会改变
字符串是不可以改变的,而buffer对象是可以改变的
var str = '你是谁';
var bf = new Buffer(str);
console.log(str); //你是谁
console.log(bf); //<Buffer e4 bd a0 e6 98 af e8 b0 81> str[1] = '的';
console.log(str); //你是谁
bf[2] = 0;
console.log(bf); //<Buffer e4 bd 00 e6 98 af e8 b0 81>
buffer转换为字符串toString()
var bf = new Buffer('你是谁');
console.log(bf.toString('utf8',3));
//有三个参数都是可选的,第一个参数指定编码格式,第二个和第三个是起始位置和终止位置
buffer的write方法
var bf = new Buffer('你是谁');
bf.write('的',3,3,'utf8');
console.log(bf.toString());
//有四个参数,1是写入的字符串,2,3是要写入的起始位置和终止位置,4是编码格式
buffer与json的互换
var bf = new Buffer('你是谁');
json = JSON.stringify(bf);
console.log(json); //转换为字符串
var arr = JSON.parse(json);
console.log(arr); //转换为对象
var copy = new Buffer(arr);
console.log(copy.toString()); //还原
buffer的复制copy
var bf = new Buffer('你是谁');
console.log(bf);
var copyBf = new Buffer('我');
console.log(copyBf);
//把bf复制到copyBf里,第二个参数是从copyBf的那个位置开始,第三个参数是从bf的那个位置开始,第四个是bf的那个位置结束,不包括最后一个
bf.copy(copyBf,1,1,3);
console.log(copyBf);
buffer的类方法
//1.isBuffer
var bf = '你是谁';
console.log(Buffer.isBuffer(bf)); //2.byteLength指定字符串的字节长度
var str = '你是谁';
console.log(Buffer.byteLength(str)); //3.concat几个Buffer连接,返回一个新的Buffer,参数有俩,第一个数组,要连接的buffer数组,第二个是设置新buffer的长度
console.log(Buffer.concat([new Buffer(3),new Buffer('123')],2)); //4.isEncoding判断是不是有效的编码格式字符串
var str1 = 'utf8';
var str2 = 'cher';
console.log(Buffer.isEncoding(str1)); //true
console.log(Buffer.isEncoding(str2)); //false
nodeJs的Buffer操作的更多相关文章
- nodejs: 理解Buffer
学习nodejs中buffer这一章,有一段写到buffer的拼接,其中一段源码非常优美,特拿来与大家共享. var chunks = []; var size = 0; res.on('data', ...
- Nodejs通过Thrift操作hbase卡住原因分析及与javascript的垃圾回收机制的关系
在最近使用Nodejs通过Thrift操作hbase的时候写了个脚本,不断发送http请求,从而取得hbase下所需的数据,但是在run的过程中for循环并没有执行完全,在执行一部分后会卡住,就再也进 ...
- 大熊君大话NodeJS之------Buffer模块
一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一 ...
- NodeJS中Buffer模块详解
一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一 ...
- Nodejs·理解Buffer
Node里面的Buffer其实就是用于网络请求.文件读取等等操作,而且是分配在堆外,不会占用堆内的内存,这也是因为本来V8的内存就很小,如果读取大文件,那就...... 之前有看过Logstash的B ...
- nodejs 使用mongoose 操作mongodb
nodejs操作mongodb可以使用mongoose: Mongoose is a MongoDB object modeling tool designed to work in an async ...
- 浅析nodejs的buffer类(转)
最近翻阅了node v0.10.4的buffer类的源代码,收获不少,也很久没有在cnode上发表文章了,想把一些收获分享给大家,有什么错误的地方希望大牛们指正啊. 前阵子有位rrestjs框架的使用 ...
- nodejs之Buffer
Buffer是什么? 简单点理解,buff就是固定长度的uint8array.(es6已实现TypedArray). 由于是固定长度所以没有了splice,concat方法. 由于是固定类型所以没有了 ...
- nodejs 循环中操作需要同步执行解决方案
最近用nodejs做了个针对某网站的小爬虫.干坏事得低调对吧,不能同时开太多的网络访问,结果各种回调/循环虐的心力交瘁. 经过了n次的百度\哥哥后终于拼出了自己要的功能.不敢独享分享出来以供大家参考. ...
随机推荐
- Codeforces 1100 - A/B/C/D/E/F - (Undone)
链接:https://codeforces.com/contest/1100 A - Roman and Browser - [暴力枚举] 题意:浏览器有 $n$ 个网页,编号 $1 \sim n$, ...
- 上传js,js修改html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ffmpeg的编译和安装
1. 先到ffmpeg官网上下载ffmpeg源码,然后配置.编译 http://ffmpeg.org/download.html 可以如下进行配置: ./configure --prefix=/usr ...
- MongoDB 查询 $关键词 方法目录
MongoDB $关键字 关系比较符号 $lt $lte $gt $gte $ne MongoDB 查询$关键字 $in $or $all MongoDB limit 选取 skip跳过 sort排序 ...
- appium元素获取
查看安卓手机的界面元素: 1.打开模拟器: 2.启动服务: 在cmd 输入: adb connect 127.0.0.1:62001 回车 可以输入 adb devices 查看启动状态 3.在a ...
- Treap仿set 模板
Treap仿set 模板 蓝书232 &代码: #include <cstdio> #include <bitset> #include <iostream> ...
- ASP.net MVC5 Code First填充测试数据到数据库
问题的产生 最近在看Adam Freeman的“Pro ASP.NET MVC5”,于是在工作机上面搭建了相应的运行环境,但是在自己的机器上面只有代码,没有数据库.记得在code first中可以新 ...
- jmeter对自身性能的优化
测试环境 apache-jmeter-2.13 1. 问题描述 单台机器的下JMeter启动较大线程数时可能会出现运行报错的情况,或者在运行一段时间后,JMeter每秒生成的请求数会逐步下降, ...
- Linux基础命令---cancel取消打印任务
cancel cancel指令用来取消已经存在的打印任务. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.openSUSE.SUSE. 1.语法 ...
- [autocomplete]如果条目末尾有空格,MustMatch不起作用
如果mustMatch被激活,我们发现,当条目最后包含一个空格时,一旦我们从列表中选择值,它将被拒绝.我们已经发现了这个问题,它在搜索事件中:在第184行,您修剪了输入的值: $.each(trimW ...