本文发表于本人博客。

上一节笔记说到创建Buffer实例,这节继续讲Buffer。本节讲解下Buffer的一些静态方法、写入以及读取方法。

Buffer.isEncoding(编码)判断nodejs是否支持此编码

    console.log(Buffer.isEncoding("gb2312"));//不管过程怎么node都不支持这个编码,死记
console.log(Buffer.isEncoding("utf8")); //true
console.log(Buffer,isEncoding("ascii")); //true

  

Buffer.isBuffer(obj) 判断obj对象是否是Buffer类型对象

    var str = "";
var obj = new Buffer(100);
console.log(Buffer.isBuffer(str)); //false
console.log(Buffer.isBuffer(obj)); //true

  

Buffer.byteLength(string,[encoding]) 获得指定编码(默认UTF8)下指定字符串所占的byte。注意utf8于ucs2不同

    var str = "独孤求败";
var buf = new Buffer(str);
console.log(Buffer.byteLength(str,"utf8")); //12
console.log(Buffer.byteLength(str)); //12
console.log(Buffer.byteLength("abc")); //3
console.log(Buffer.byteLength(str,"ucs2")); //8

  

Buffer的写入方法:writeXXX(value,offset,[noAssert])

value:必须是整形或浮点;

offset:写入的开始位置;

noAssert:超出范围包异常,可省略;

有如下方法:writeInt8(),writeInt16BE(),writeIntLE(),writeInt32LE(),writeInt32BE().注意writeInt8()只有这个而且是从默认是LE模式

    var buf = new Buffer(4);
var data = 0x0c;//十六进制=12
buf.fill(); //使用fill方法填充,差不多就是全部清零状态
buf.writeInt8(data,0);
console.log(buf); //0c 00 00 00 buf.fill();
buf.writeInt16LE(data,0);//使用16位有符号 低到高存储
console.log(buf); //0c 00 00 00 buf.fill();
buf.writeInt16BE(data,0);//使用16位有符号 高到低存储
console.log(buf); //00 0c 00 00

  

Buffer的读取方法readUInt8(offset,[noAssert]) 这个跟write是一一对应的!

    var buf = new Buffer(4);
var data = 0x0c;
buf.fill();
buf.writeInt8(data,0);
console.log(buf.readInt8(0)); //12 buf.fill();
buf.writeInt16LE(data,0);
console.log(buf.readInt16LE(0)); //12

  

copy(targetBuffer,[targetStart],[sourceStart],[sourceEnd]) 从一个Buffer对象拷贝指定的位置到目标Buffer

    var sBuffer = new Buffer("独孤求败");
var tBuffer1 = new Buffer(6);
var tBuffer2 = new Buffer(9);
sBuffer.copy(tBuffer1);
sBuffer.copy(tBuffer2);
console.log(tBuffer1.toString()); //独孤
console.log(tBuffer2.toString()); //独孤求

  

大家看到上面没,跟再上面的一段对比,就知道默认utf输出是3个字节一个中文哦!所以打印sBuffer的字节数是12.大家可以尝试下使用编码ascii输出是多少,什么条件下是不能输出的!

这节课先到这里,感觉最近又没时间了,慢慢,坚持下去。

Node.js API学习笔记(二)的更多相关文章

  1. Node.js API 学习笔记

    常用 API 学习笔记 url 函数 url.parse: 解析 url 地址 url.resolve: 向 url 地址添加或替换字段 url.format: 生成 url 地址 querystri ...

  2. Node.js API学习笔记(一)

    此文章已经发表于本人博客. Terminal(终端) 说起这个使用过linux系统的兄台一般都会知道的,本人理解:类似Putty这些ssh工具通过 软件来实现远程控制主机,对于我们使用者来说,它会显示 ...

  3. 《深入浅出Node.js》学习笔记(一)

    看了朴灵前辈的node.js系列文章,很开阔视野,虽然能力有限还是有很多不懂,但是还是希望能写下笔记,初步对node.js有点了解. 一.概念 Node.js不是JS应用.而是JS运行平台 Node. ...

  4. node.js day01学习笔记:认识node.js

    Node.js(JavaScript,everywhere) 1.Node.js 介绍 1.1. 为什么要学习Node.js 企业需求 + 具有服务端开发经验更好 + front-end + back ...

  5. Node.js入门学习笔记(一)

    先来个最常见的"Hello World!". 打开你最喜欢的编辑器(我用的是Sublime Text),创建一个helloWorld.js的文件.我们要做的就是向stdout输出& ...

  6. node.js 基础学习笔记3 -http

    http模块,其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端 http.server是一个基于事件的HTTP服务器 http.request则是一个HTTP客户端工具,用户向服务器发送请 ...

  7. node.js入门学习笔记整理

    (1)node Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node与javaScript的区别在于,javaScript的顶层对象是window,而no ...

  8. Node.js入门学习笔记(三)

    基于事件驱动的回调 这个问题不好回答,不过这是Node.js原生的工作方式.它是事件驱动的,这也是它为什么这么快的原因.你可以花一点时间阅读一下Felix Geisendörfer的大作 Unders ...

  9. node.js 基础学习笔记2

    Module和Package是Node.js最重要的支柱. Node.j 提供require函数来调用其他模块,而且模块都是基于文件.模块和包区别是透明的,因此常常不作区分. 1.模块和文件一一对应. ...

随机推荐

  1. hdu6003 Problem Buyer 贪心 给定n个区间,以及m个数,求从n个区间中任意选k个区间,满足m个数都能在k个区间中找到一个包含它的区间,如果一个区间包含了x,那么 该区间不能再去包含另一个数,即k>=m。求最小的k。如果不存在这样的k,输出“IMPOSSIBLE!”。

    /** 题目:hdu6003 Problem Buyer 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6003 题意:给定n个区间,以及m个数,求从n个区 ...

  2. Iptables规则执行顺序详解

      1.The first is the mangle table which is responsible for the alteration of quality of service bits ...

  3. PHP上传类 图片上传 upload class实现image crop resize 缩略图

    manage uploaded files, and manipulate images in many ways through an HTML form, a Flash uploader, XM ...

  4. Python_ip代理

    #encoding=utf8import urllibimport urllib2import sys sys.path.append('D:/python/beautifulsoup')sys.pa ...

  5. linux 启动jar命令

    进入ECS目录jar 存放目录: 1.执行命令: linux:启动jar nohup java -jar qualityshop-api.jar>log.file 2>&1 &am ...

  6. 第一百四十八节,封装库--JavaScript,菜单切换

    第一百四十八节,封装库--JavaScript,菜单切换 首先在封装库封装点击切换方法 /** dian_ji_qie_huan()方法,设置点击切换,将元素设置成点击切换,也就是点击目标元素后,循环 ...

  7. (转)java 静态内部类

    转自:http://blog.sina.com.cn/s/blog_605f5b4f0100zbps.html 参考:http://docs.oracle.com/javase/tutorial/ja ...

  8. Spark源码分析(四)-Job提交过程

    原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3903478.html   本文将以一个简单的WordCount为例来看看Job的提交过程

  9. 2014年辛星解读css第一节

    CSS是Cascading Style Sheets的缩写.即层叠样式表,它用于表现HTML的样式,即HTML仅仅是去写该网页有哪些内容,至于怎样去表现它们,由CSS去定制. ************ ...

  10. 【Python】GUI 练习1--利率计算器

    import sys from PyQt4.QtCore import * from PyQt4.QtGui import * class Form(QDialog): def __init__(se ...