本文发表于本人博客

上一节笔记说到创建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. Linux高频指令总结

    作为一个计算机专业的科班,不会玩Linux怎么能行呢?玩Linux用可视化界面显得太low了,为了效(zhuang)率(bi),当然要用什么都用指令啊,可是指令太多了啊,现在就把平时遇到的高频的指令做 ...

  2. springBoot文档地址

    文档: https://www.gitbook.com/book/qbgbook/spring-boot-reference-guide-zh/details 配置: http://docs.spri ...

  3. css 禅意花园 笔记

    1.  FOUC(Flash Of Unstyled Content) 现象( 在某些情况下,IE加载网页时会出现短暂的CSS样式失效. a: 只发生在Windows上的 IE (5.0版本以上) b ...

  4. node js 读取mysql

    1.新版node自带npm 2.下载npm不需要node命令 3.懒得配环境变量.直接把生成的npm复制到报错目录,再把mysql模块复制回来 var mysql = require('mysql') ...

  5. JDBC(Java Database Connectivity,Java数据库连接)API是一个标准SQL(Structured Query Language

    JDBC(Java Database Connectivity,Java数据库连接)API是一个标准SQL(Structured Query Language,结构化查询语言)数据库访问接口,它使数据 ...

  6. Revit 2017 编程须要用Visual Studio2015 +.NET Framework 4.52

    一年一度的Revit产品公布时刻,我们抢先想各位介绍下Revit 2017的变化和新功能 Major changes and renovations to the Revit API API chan ...

  7. curl使用例子

    地址:http://phpbook.phpxy.com/34771 参考:http://php.net/manual/zh/function.curl-setopt.php 我们将curl的步骤分为以 ...

  8. vc6项目-vc8项目 转换日志

    此随笔参考了http://blog.163.com/feng_qihang/blog/static/7129199120093422722430/ 把VC6的项目转换成VS2005项目,经过VS200 ...

  9. nginx搭建文件服务器

    在部署了各种应用后,产生的日志文件,需要在线下载查看,不用每次登陆服务器去拿: 这里,因为服务器部署了很多的应用程序,可以建一个主目录mylog,在主目录里用软连接将需要的各个日志文件夹都建好连接 l ...

  10. iOS-去除NavigationBar边线

    解决办法: self.navigationController.navigationBar.barStyle = UIBaselineAdjustmentNone;