本文发表于本人博客

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

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

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

  

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

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

  

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

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

  

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

value:必须是整形或浮点;

offset:写入的开始位置;

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

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

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

  

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

  1. var buf = new Buffer(4);
  2. var data = 0x0c;
  3. buf.fill();
  4. buf.writeInt8(data,0);
  5. console.log(buf.readInt8(0)); //12
  6.  
  7. buf.fill();
  8. buf.writeInt16LE(data,0);
  9. console.log(buf.readInt16LE(0)); //12

  

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

  1. var sBuffer = new Buffer("独孤求败");
  2. var tBuffer1 = new Buffer(6);
  3. var tBuffer2 = new Buffer(9);
  4. sBuffer.copy(tBuffer1);
  5. sBuffer.copy(tBuffer2);
  6. console.log(tBuffer1.toString()); //独孤
  7. 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. maven项目打ZIP包

    1.Maven插件配置: <!-- ZIP打包 --> <plugin> <artifactId>maven-assembly-plugin</artifac ...

  2. sublime3 SublimeREPL python3

    https://blog.csdn.net/lylfv/article/details/81453016

  3. easyui -grid每列绑定tooltip

    /**用法:*/function doCellTip() { $('#dg').datagrid('doCellTip', { 'max-width': '100px' });} /** * 扩展两个 ...

  4. 请写出一段表单提交的HTML代码,表单名称为form1,提交方式为post,提交地址为submit.asp

    请写出一段表单提交的HTML代码,表单名称为form1,提交方式为post,提交地址为submit.asp 解答: <form name=”form1” method=”post” action ...

  5. 关于JSON日期格式显示及My97日期控件

    1.My97日期控件.显示不同的日期格式,可以调整"dateFmt“的参数来配置: 详细DEMO:http://www.my97.net/demo/index.htm <p>日期 ...

  6. Cross compile perl

    Alex Suykov had do some work for this purpose, and my compile script is based on her patch. Steps St ...

  7. IOS . -转载-10行代码搞定九宫格

    //每个Item宽高 CGFloat W = ; CGFloat H = ; //每行列数 NSInteger rank = ; //每列间距 CGFloat rankMargin = (self.v ...

  8. Ubuntu系统-网络配置

    网络配置 静态IP root@ubuntu:~# cat /etc/network/interfaces # This file describes the network interfaces av ...

  9. 74、shape 画圆 加 边框

    <?xml version="1.0" encoding="utf-8"?> <!--<shape xmlns:android=&quo ...

  10. python 之 多线程

    一.多线程(具体可参照博文多进程---->http://www.cnblogs.com/work115/p/5621789.html) 1.函数式实现多线程 2.类实现多线程 3.多线程之线程锁 ...