标准模块Buffer
Buffer类似与一个整形数组, Buffer也一样用require(‘name’)赋值给本地变量
例如:var Buffer = require(‘buffer’).Buffer;
1. new Buffer(size)
在v8的堆上申请一块大小为size的内存。
var sys = require(‘sys’),//获取标准模型sys,利用sys提供的puts打印数据
Buffer = require(‘buffer’).Buffer,
buf = new Buffer(20);
sys.puts(buf.length); //print 20
如果使用之前不new可以直接赋值吗?可以的,但是不能给指定下标的赋值,这样看来他还是个动态数组。大小和机器有关。一旦赋值以后,就可以在根据索引来访问了。
2. buffer.write(string,encoding,offset)
用encoding编码方式写一个字符串在offset位置,返回写入buffer的数据长度。如果new出来的buffer空间不够容纳字符串,字符串将截断。
例子:
var sys = require(‘sys’),
Buffer = require(‘buffer’).Buffer,
buf = new Buffer(5),
len;
len = buf.write(‘helloworld’,’ascii’,0);
sys.puts(len + “bytes “ + buf.toString(‘ascii’,0,len);//print 5 bytes: hello
3. buffer.toString(encoding,start,end)
解码用encoding方法编码的Buffer数据,从start位置开始到end位置结束,返回解码后的字符串。
例子见上面buffer.write().
4. buffer[index]
前面说到buffer类似于一个int型数组,可以通过索引来访问,设置值。因为是字节,所以涉及到一个取值范围,0—255
例子:
var sys = require(‘sys’),
Buffer = require(‘buffer’).Buffer,
str = ‘helloworld’,
buf = new Buffer(str.length);
for(var i=0;i<str.length;i++){
buf[i] = str.charCodeAt(i);
}
sys.puts(buf);
sys.puts(‘--------------------‘);
for(var i=0;i<buf.length;i++){
sys.puts(String.fromCharAt(buf[i]));
}
//输出结果:
helloworld
--------------------
h
e
l
l
o
w
o
r
l
d
5. Buffer.byteLength(string,encoding)
返回buffer内真实字节数,和字符串的string不同
例子:
var sys = require(‘sys’),
Buffer = require(‘buffer’).Buffer,
str = ‘\u00bd + \u00bc = \u00be’;
sys.puts(str + “:str.length”+ str.length +”bytes “ + Buffer.byteLength(str,’utf8’));
6. buffer.length
返回buffer的数据长度。例子里已经用到过。
7. buffer.copy(targetBuffer,targetStart,sourceStart,sourceEnd)
内存拷贝,从buffer的第targetStart位置开始,拷贝sourceEnd-sourceStart个字节到目标buffer里,放到目标buffer,从sourceStart的位置起。
例子:
var sys = require(‘sys’),
Buffer = require(‘buffer’).Buffer,
Buf1 = new Buffer(26),
Buf2 = new Buffer(100);
for(var i=0;i<26;i++){
Buf1[i] = i+97; //a-z
}
sys.puts(Buf1);
Buf1.copy(Buf2,0,0,10);
sys.puts(Buf2);
//输出:abcdefghijklmnopqrstuvwxyz
abcdefghij
8. buffer.slice(start,end)
从buffer里截取一个新的buffer,从buffer的start开始到end位置结束。
例子:
var sys = require(‘sys’),
Buffer = require(‘buffer’).Buffer,
buf1 = new Buffer(26),
buf2;
for(var i=0;i<26;i++){
buf1[i] = i+97;
}
buf2 = buf1.slice(3,8);
sys.puts(buf2);
//输出:defgh
虽然Buffer和int型数组相似,但是它不支持push(),shift(),unshift(),pop()等方法。
分享到:
相关推荐
javascript-typescript-langserver, 通过语言服务器协议的JavaScript和打字机代码智能 /app语言服务器 这是用于JavaScript和TypeScript的语言服务器,遵循语言服务器协议( LSP ) 。 它使用typescript的进行源代码...
使用node.js进行服务器端JavaScript编程 node.js 是一个可以使用 JavaScript 开发服务器端应用的平台。它依托于 Google V8 JavaScript 引擎,并采用事件 I/O 的架构,可以用来创建高性能服务器。本文详细介绍了 node...
JavaScript应用实例-模块源码.js
JavaScript应用实例-人脸模块.js
JavaScript应用实例-翻译模块.js
JavaScript教程--从入门到精通 PPT 精简版
JavaScript教程--从入门到精通 js
JavaScript应用实例-接码平台模块.js
JavaScript应用实例-脚本排队模块.js
JavaScript应用实例-百度云盘模块.js
Node.js 是一种强大的服务器端 JavaScript 运行环境,它允许开发者使用 JavaScript 编写服务器端应用程序。下面是一个简单的 Node.js 示例,用于创建一个基本的 HTTP 服务器。 示例:创建一个简单的 HTTP 服务器 ...
JavaScript应用实例-例子_模块使用.js
JavaScript应用实例-脚本排队模块155.js
JavaScript入门教程--书籍 超清晰
JavaScript应用实例-服务器.js
JavaScript应用实例-脚本间无限制通信模块.js
JavaScript应用实例-生僻字大佬的触摸模块.js
15JavaScript服务器端应用——ASP共17页.pdf.zip