Node.js API学习笔记(二)
2024-10-18 07:59:53
本文发表于本人博客。
上一节笔记说到创建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输出是多少,什么条件下是不能输出的!
这节课先到这里,感觉最近又没时间了,慢慢,坚持下去。
最新文章
- [C#] 简单的 Helper 封装 -- SQLiteHelper
- 《寒江独钓_Windows内核安全编程》中修改类驱动分发函数
- error-2016-2-15
- 团队项目 SRS文档
- Inventory of the materials to teach you how to query a date certain combination of dimensions
- UCOS-消息队列(学习笔记)
- 分层服务提供者(LSP)
- postgresql安装配置
- I/O端口与I/O内存
- SWT中Display和Shell是个什么东东
- 为什么不要在android或者ios上直连mysql或者sqlserver之类的数据库(跳大神)
- Winform WebBrowser引用IE版本问题
- MyBatis 3 与 Spring 4 整合关键
- Queues 队列
- react基础(2)
- ssh项目访问路径及url请求书写
- 【转】shell学习笔记(二) ——shell变量
- u3d材质Tiling和Offset意义以及TRANSFORM_TEX
- perl 之 正则表达式 (简)
- 安装netcat(-bash: netcat: command not found)