Node.js API学习笔记(二)

本文发表于本人博客

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

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

时间: 2024-10-23 11:27:36

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

Node.js API学习笔记(一)

此文章已经发表于本人博客. Terminal(终端) 说起这个使用过linux系统的兄台一般都会知道的,本人理解:类似Putty这些ssh工具通过 软件来实现远程控制主机,对于我们使用者来说,它会显示信息并能接收信息并处理,这个东东就是终端.至于什么伪终端应该就是用软件实现使一套输入输出设备 可以支持多个软终端. 这里说下node.js中有关的终端模块3个,分别是:STDIO.TTY.REPL. 一.STDIO 如果我没理解错控制台应该是属于noddjs标准的输入输出,一般把信息输出到stdou

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

http模块,其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端 http.server是一个基于事件的HTTP服务器 http.request则是一个HTTP客户端工具,用户向服务器发送请求. HTTP服务器 (1)http.Server实现,提供了一套封装级别很低的API,仅仅是流控制和简单的解析. request当客户端请求到来时,该事件被触发,提供两个参数,分别是http.ServerRequest和http.ServerResponse的实例,表示请求和相应信息. var h

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

基于事件驱动的回调 这个问题不好回答,不过这是Node.js原生的工作方式.它是事件驱动的,这也是它为什么这么快的原因.你可以花一点时间阅读一下Felix Geisendörfer的大作 Understanding node.js 可了解一些背景知识. 当我们使用http.createServer方法的时候,我们当然不只是想要一个侦听某个端口的服务器,我们还想要这在服务器收到一个HTTP请求的时候做点什么. 问题是,这是异步的,请求任何时候都可能到达,但是我们的服务器却跑在一个单进程中. 写PH

Node.js入门学习笔记(二)

函数传递 举例来说,你可以这样做: function say(word) {     console.log(word); } function execute(someFunction, value) {    someFunction(value); } execute(say, "Hello"); 请仔细阅读这段代码!在这里,我们把say函数作为execute函数的第一个变量进行了传递.这里返回的不是say的返回值,而是say本身! 这样一来,say就变成了execute中的本地

node.js入门学习(二)

一.构建http服务程序-根据不同请求做出不同响应 // 加载http模块 var http = require("http"); // 创建一个http服务对象 http.createServer(function(req, res) { if(req.url === '/') { res.end("hello index"); } else if(req.url === '/list') { res.end("hello list"); }

angular学习笔记(二十三)-$http(1)-api

之前说到的$http.get和$http.post,都是基于$http的快捷方式.下面来说说完整的$http: $http(config) $http接受一个json格式的参数config: config的格式如下: { method:字符串 , url:字符串, params:json对象, data:请求数据, headers:请求头, transformRequest:函数,转换post请求的数据的格式, transformResponse:函数,转换响应到的数据的格式, cache:布尔

js基础学习笔记(二)

2.1  输出内容(document.write) document.write() 可用于直接向 HTML 输出流写内容.简单的说就是直接在网页中输出内容. 第一种:输出内容用“”括起,直接输出""号内的内容. <script type="text/javascript"> document.write("I love JavaScript!"); //内容用""括起来,""里的内容直接输出.

Win8 HTML5与JS编程学习笔记(二)

近期一直受到win8应用的Grid布局困扰,经过了半下午加半个晚上的奋斗,终于是弄明白了Grid布局方法的规则.之前我是阅读的微软官方的开发教程,书中没有详细说明CSS3的布局规则,自己鼓捣了半天也是一头雾水,于是又找到了官方的启蒙教程的布局一张,仔细阅读了一遍,又思考了代码,并在代码的基础上实验,终于是明白了布局方法.官方教程地址是:http://msdn.microsoft.com/zh-cn/library/windows/apps/jj841108.aspx 微软基于CSS3开发了Gri

JS 事件学习笔记(二)

在JS事件学习笔记(一)中学习了事件流.事件处理程序.事件对象以及跨浏览器应该怎么做等知识,现在我们现在来学习浏览器中主要的各种事件. 一. load事件 load事件通常是通过JavaScript代码指定,在window对象上绑定,实际上根据DOM2规定,应该在document上而非window上触发load事件,但是所有浏览器都在window对象上实现了该事件.因此以确保兼容性推荐使用该方法: 另外,在window上发生的事件也可以作为body元素的属性在html代码中添加. load事件的