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次的百度\哥哥后终于拼出了自己要的功能.不敢独享分享出来以供大家参考. ...
随机推荐
- Alpine Linux常用命令
一:Alpine Linux开启SSH远程登陆 1.简介: 最重要的一个服务了,远程登陆需要用它,文件传输需要用它,必备功能.不管你是在实体机上跑,虚拟机上跑,docker里面跑,这个都是必须的. 2 ...
- 洛谷P3384 【模板】树链剖分
题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式 ...
- PAT甲级1135 Is It A Red-Black Tree?【dfs】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805346063728640 题意: 给定一棵二叉搜索树的先序遍历结 ...
- [Day14]Eclipse高级、类与接口作为参数返回值
l 不同修饰符的使用 类,最常使用public修饰 成员变量,最常使用private修饰 成员方法,最常使用public修饰 l 自定义数据类型的使用 类作为方法参数时,说明要向方 ...
- python_代码中调用java类
1. 安装jpype (python调用java class文件用) 1.1. 自动安装:pip install jpype1 1.2. 手动方式安装jpype1 安装wheel:pip instal ...
- Git命令行基本操作
Git--- download网址:https://git-scm.com/downloads 0. 安装Git 网上有很多Git安装教程,如果需要图形界面,windows下建议使用TortoiseG ...
- 解决跨域问题-jsonp&cors
跨域的原因 浏览器的同源策略 同源策略是浏览器上为安全性考虑实施的非常重要的安全策略. 指的是从一个域上加载的脚本不允许访问另外一个域的文档属性. 举个例子:比如一个恶意网站的页面通过iframe嵌入 ...
- nginx配置虚拟主机vhost的方法详解
Nginx vhost配置,可实现基于ip.端口号.servername的虚拟主机,同时可避免直接修改主配置文件.在nginx下配置虚拟主机vhost非常方便.这篇文章主要介绍了nginx配置虚拟主机 ...
- 小程序 navigator 无法跳转 tabBar上的页面
解决方法一: navigator 的 open-type 设置为 switchTab 解决方法二: 使用 wx.switchTab({ url: ‘../cart/index’ }) 进行跳转
- aws cloudwatch监控怎么通过钉钉机器人报警
最近在完善海外业务在aws服务的CloudWatchh监控,发现CloudWatch报警通知要通过aws的sns服务,直接支持的通道有短信和邮件,但是我们想推到钉钉群里面的群机器人里面这个就要借助aw ...