当前位置: 首页>NodeJS>a13561560775的专栏

a13561560775的专栏

时间:2015-07-10 09:42 来源:网络整理 作者:KKWL 点击:
由于其中的一些函数用法都是一样的,只翻译了其中几个 Buffer Stablity:3–稳定的 纯粹的javascript支持unicode码而对二进制不是很支持,当解决TCP流或者文件流的时候,处理流是有必要的。

由于其中的一些函数用法都是一样的,只翻译了其中几个

Buffer

       Stablity:3–稳定的

纯粹的javascript支持unicode码而对二进制不是很支持,当解决TCP流或者文件流的时候,处理流是有必要的。Node有很多的策略来解决流的问题

 

原始的资料存储在buffer类中,缓冲区和一个数字数组类似但和在V8引擎中的原始数据分派也是一致的,一个缓冲区不能调整大小

 

Buufer类是全局的,使用它不需要用require来获取

 

转换缓冲区到字符串对象需要一个明确的编码分发。下面是不同的编码方法

Ascii, urf8, usc2, utf16le, base64, binary,hex

 

Buffer对象也可以使用各类行的数组,buffer对象克隆到ArrayBuffer,经常用来存储各类行的数组。Buffer的内存和ArrayBuffer不是共享的

 

NOTE: node.jsv0,8 在array.buffer简单的定义缓冲区而不是克隆他

 

当需要更高的效率时,他引入了类型化数组规范,ArrayBuffer#slice()赋值了一份在buffer#slice创建了一个视图的时候

 

Class: Buffer

Buffer类是一个全局类型用来解决二进制数据,它可以在多种情况下构建

 

New Buffer(size);

.size Numbr

分配一个新的size大小的缓冲区

 

New Buffer(array)

. array Array

用array初始化分派一个新的缓冲区

New Buffer(str, [encoding])

.str String – 字符串编码

.encoding String- 任意的编码方式

分配一个新的缓冲区给str,编码方式默认为utf8

 

Class 方法:

Buffer.isEncoding(encoding)

字符串编码,测试有没有这种编码方式

如果encoding是一种有效的编码的方式返回true,否则返回false

 

Buf.write(string, [offset], [length],[encoding])

.string – 写入缓冲区的数据

.offset Number, 任意数字,默认 0

.length Number, 任意的,默认 buffer.length – offset

Encoding String,默认utf-8

用所给的编码方式在缓冲区的编码位置写入字符串,offset默认为0,编码默认为utf8,legth是写入的数据的字节数,返回写入的字符的字节数,如果缓冲区没有足够的空间来储存字符串,他将会写入字符串的一部分,length默认为buffer.length – offset,这个方法不会写局部的字符

Buf = new Buffer(256);

Len = buf.write(‘\u00bd + \u00bc = \u00be’,0 );

Console.log(len + “bytes:” + buf.toString(‘utf8’,0, len));

写入的字符被设定在Buffer._charsWritten并且将会在下一次调用buf.write()重写

Buf.toString([encoding], [start], [end])

.encoding String,默认为utf8

.start Number : 默认0

.End Number: 默认为buffer.length

解码并返回一个缓冲区数据编码方式为encoding,从start到end字节

Buf.toJSON

返回一个json-buffer的实例,和输出的Json数组是完全一样的,json.stringify暗中调用这个函数当生成一个buffer实例时

 

Example:

Var buf = new Buffer(‘test’);

Var json = JSON.stringify(buf);

 

Console.log(json);

//’[116, 101, 115, 116]’

 

Var copy = new Buffer(JSON.parse(json));

 

Console.log(copy);

//<Buffer 74, 65, 73, 784);>

 

Buf[index]

获取并设置在index字节的位置,这个值指的是单个的字节,所以这个合法的范围是从00 到 0xff,或是 0 – 255;

Example: 复制一个ascii’字符串进缓冲区,每一次一个字节

 

Str = “node.js”

Buf = new Buffer(str.length);

For(var I = 0; i < str.length; i ++) {

       Buf[i]= str.charCodeAt[i];

}

 

Console.log(buf);

//node.js

Class Method: Buffer.isBuffer(obj)

.obj Object

.Return: Booelan

测试这个obj是不是Buffer类得

 

Class Method: Buffer.byteLength(string,[encoding]);

.string String

.encoding String, 随意的, 默认为 utf8
return: Number

给字符串一个字符长度的字节,,编码默认为utf8,这和String.prototype.length是不一样的,因为返回字符串的长度

Example:

Str = ‘\u00d + \u00dc = \u00be’;

Console.log(str + “: ” + str.length + “characters,” +

       Buffer.byteLength(str,‘utf8’) + “bytes”);

// 1/2 + 1/4 = 3/4: 9 characters, 12bytes

 

Class Method: Buffer.concat(list,[totalLength])

.list Array 合并列表的Buffer对象

.totalLength Number 当合并的时候所有的buffer的宽度

 

返回一个合并了所有的buffer对象列表的缓冲区

如果这个列表没东西,或者这个totalLength是0,那么返回一个0宽度的缓冲区

如果这个列表只有一个对象,那么列表的第一个对象返回

如果这个列表有更多的对象,那么创建一个新的缓冲区

 

如果没有提供totalLength,他从列表里读出缓冲对象,然而,这给该函数添加了一个额外的循环,这比明确的添加一个宽度要快

 

Buf .length

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------