码迷,mamicode.com
首页 > 其他好文 > 详细

Buffer类处理二进制

时间:2014-12-12 17:02:15      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:二进制   字符串   客户端   nodejs   buffer   

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

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

Buffer类有三种构造函数:

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

BufferJSON对象之间的转化

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

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

NodejsBuffer类定义了三个类方法:

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

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

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

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

本文出自 “时光” 博客,请务必保留此出处http://timeblog.blog.51cto.com/8650972/1589137

Buffer类处理二进制

标签:二进制   字符串   客户端   nodejs   buffer   

原文地址:http://timeblog.blog.51cto.com/8650972/1589137

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!