本文发表于本人博客

上一节笔记说到创建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输出是多少,什么条件下是不能输出的!

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

最新文章

  1. [C#] 简单的 Helper 封装 -- SQLiteHelper
  2. 《寒江独钓_Windows内核安全编程》中修改类驱动分发函数
  3. error-2016-2-15
  4. 团队项目 SRS文档
  5. Inventory of the materials to teach you how to query a date certain combination of dimensions
  6. UCOS-消息队列(学习笔记)
  7. 分层服务提供者(LSP)
  8. postgresql安装配置
  9. I/O端口与I/O内存
  10. SWT中Display和Shell是个什么东东
  11. 为什么不要在android或者ios上直连mysql或者sqlserver之类的数据库(跳大神)
  12. Winform WebBrowser引用IE版本问题
  13. MyBatis 3 与 Spring 4 整合关键
  14. Queues 队列
  15. react基础(2)
  16. ssh项目访问路径及url请求书写
  17. 【转】shell学习笔记(二) ——shell变量
  18. u3d材质Tiling和Offset意义以及TRANSFORM_TEX
  19. perl 之 正则表达式 (简)
  20. 安装netcat(-bash: netcat: command not found)

热门文章

  1. CSS3自定义滚动条样式 -webkit-scrollbar (一)
  2. 【转】不用程序mysql也可以查询今天、昨天、7天、近30天、本月、上一月的数据
  3. 安装python各类工具包、IDE以及著名开源模块如kaldi等的简单总结
  4. 第二百三十六节,Bootstrap辅组类和响应式工具
  5. 第二百二十三节,jQuery EasyUI,ComboBox(下拉列表框)组件
  6. 【VBA】合并多个excel文件
  7. 【Raspberry pi】python ide-spyder
  8. 手机控制电脑定时关机,重启WiFi
  9. SR领域文献资源汇总(链接地址)
  10. JUnit小记