Buffer类处理二进制

在客户端Javascript脚本代码中,对于二进制数据并没有提供一个很好的支持。然而,在处理TCP流或文件流时,必须要处理二进制数据。因此,在Node.js中,定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区。

在Node.js中,Buffer是一个可以在任何模块中被利用的类,不需要为该类的使用加载恩赫模块。

Buffer类有三种构造函数:

第一种是只需将缓存区大小(以字节为单位)指定为构造函数的参数,形式为new Buffer(size),Buffer有一个length属性,属性值为缓存区大小。可以使用该对象的fill方法来初始化缓存区内容:buf.fill(value,[offset],[end]),value是必须制定的参数,为被写入的值,后两个可选,offset代表从第几个字节开始写入,默认0,end代表一直写到第几个字节处,默认Buffer对象大小,即写到缓存区底部。

第二种是使用数组初始化缓存区,形式为new Buffer(array)。

第三种是直接使用一个字符串来初始化缓存区,形式new Buffer(str, [encoding]),str为写入字符串,第二个参数是指定文字编码格式。默认utf-8。

区分字符串与缓存区的长度:

str=”我爱你”;

buf=new Buffer(str);

str.length;//3

buffer.length;//9

可以使用一0开始的序号获取字符串对象或缓存区的数据。但获取数据时,字符串对象是以一个文字为单位的,而缓存区对象一字节作为一个单位,所以:

str[1];//输出爱

buf[1];//输出136

字符串创建后不可修改。str[1]=”恨”,输出str,还是’我爱你‘。不可改变。而缓存区中的数据是个以改变的。

Buffer对象的toString方法可以将缓存区中的数据转换成字符串。在需要修改缓存区中数据时,可以使用Buffer对象的write方法。在Nodejs中还可以使用StringDecoder对象将缓存区中的数据转换成字符串,该对象的作用和toString一样,只是对utf-8编码格式提供了更好的支持。

Buffer与数值对象之间的转换

在Nodejs中提供了将缓存区中二进制都去为js中的Number或将Number类型的数据转换为更精确的类型后向Buffer中写入的方法。具体分为都系列与写系列方法。

Buffer与JSON对象之间的转化

在Node中可以使用JSON.stringify方法将缓存区中的数据转换为一个字符串,也可以使用JSON.parse方法将一个转换过的字符串还原成数组。

Buffer类有个方法,copy可以复制缓存区,可以将一个对象中保存的二进制数据复制到另一个对象中。

在Nodejs中Buffer类定义了三个类方法:

isBuffer: 判断一个对象是否为Buffer对象。

byteLength: 计算指定字符串的字节数。

concat: 将几个Buffer对象合并结合创建为一个新的Buffer对象。

isEncoding: 检测一个字符串是否为一个有效的编码格式字符串。

时间: 2024-09-30 06:46:45

Buffer类处理二进制的相关文章

nodeJS-使用buffer类处理二进制数据

使用buffer类处理二进制数据 在客户端javascript脚本代码中,对于二进制数据并没有提供一个很好的支持.然后在nodejs中需要处理像TCP流或文件流时,必须要处理二进制数据.因此在node.js中,定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区. 一:创建Buffer对象 在node.js中,Buffer类是一个可以在任何模块被利用的全局类,不需要为该类的使用而加载任何模块.可以使用new关键字来创建该类的实例对象.Buffer类可以使用三种方式来构造函数,第一

Node.js权威指南 (5) - 使用Buffer类处理二进制数据

5.1 创建Buffer对象 / 705.2 字符串的长度与缓存区的长度 / 725.3 Buffer对象与字符串对象之间的相互转换 / 74 5.3.1 Buffer对象的toString方法 / 74 5.3.2 Buffer对象的write方法 / 75 5.3.3 StringDecoder对象 / 755.4 Buffer对象与数值对象之间的相互转换 / 775.5 Buffer对象与JSON对象之间的相互转换 / 795.6 复制缓存数据 / 805.7 Buffer类的类方法 /

Node.js系列:Buffer类的使用

客户端JavaScript中没有对二进制数据提供很好的支持.但是在处理TCP流或文件流时,必须要处理二进制数据.Node.js定义了一个Buffer类,用来创建一个专门存放二进制数据的缓存区. Buffer中存的数据默认为16进制. 1.创建Buffer对象 在Node.js中,Buffer类是一个可以在任何模块中不使用的全局类,不要单独加载.可以使用New关键字来创建该类的实例对象. Buffer类有三种形式的构造函数: 第一种:将缓存区大小(以字节为单位)作为构造函数的参数 var size

Buffer类的详解(转)

Buffer 类是 java.nio 的构造基础.一个 Buffer 对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里,数据可被存储并在之后用于检索.缓冲区可以被写满或释放.对于每个非布尔原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer.CharBuffer.DoubleBuffer.FloatBuffer.IntBuffer.LongBuffer 和 ShortBuffer,是没有 BooleanBuffer 之说的.尽管缓冲区作用于它们存储

浅析nodejs的buffer类

1.什么时候该用buffer,什么时候不该用 看一下如下的测试代码,分别是拼接各种不同长度的字符串,最后直接拼接了10MB的字符串 var string,string2,string3; var bufstr,bufstr2,bufstr3; var j; console.time('write 1000 string'); for(j=0;j<1000;j++){ var x = j+''; string += x; } console.timeEnd('write 1000 string')

关于golang中IO相关的Buffer类浅析

io重要的接口 在介绍buffer之前,先来认识两个重要的接口,如下边所示: type Reader interface { Read(p []byte) (n int, err error) } type Writer interface { Write(p []byte) (n int, err error) } 上边两个接口在golang sdk安装目录src/io/io.go中定义.后边凡是涉及到io相关操作的,基本上都实现了这两个接口,如: 1. package bufio 中的Rea

Muduo 设计与实现之一:Buffer 类的设计

[开源访谈]Muduo 作者陈硕访谈实录 http://www.oschina.net/question/28_61182 开源访谈是开源中国推出的一系列针对国内优秀开源软件作者的访谈,以文字的方式记录并传播.我们希望开源访谈能全面的展现国内开源软件.开源软件作者的现状,着实推动国内开源软件的应用与发展. [嘉宾简介] 陈硕 北京师范大学硕士,擅长 C++ 多线程网络编程和实时分布式系统架构.现任职于香港某跨国金融公司 IT 部门,从事实时外汇交易系统开发.编写了开源 C++ 网络库 muduo

HDU 5050 Java 大数类+读入二进制

http://acm.hdu.edu.cn/showproblem.php?pid=5050 才知道 原来JAVA这么好用,连二进制都封装好了 in.nextBigInteger(2)  就是按二进制读入 当然a.gcd(b).toString(2)  是按二进制输出一个二进制String,  a,b是大数 另外,JAVA交代码原来是class Main import java.math.BigInteger; import java.util.Scanner; public class Mai

node.js的Buffer类

1.创建 创建一个长度为256的Buffer实例:var buf = new Buffer(256); 创建一个数组:var buf = new Buffer([10, 20, 30, 40, 50]); 创建一个字符串:var buf = new Buffer("12345", "utf-8");utf-8为编码方式,还有"ascii", "utf8", "utf16le", "ucs2&quo