宝哥软件园

在node.js中使用缓冲类处理二进制数据的方法

编辑:宝哥软件园 来源:互联网 时间:2021-09-11

在Node.js中,定义了一个Buffer类,用于创建一个特殊的缓冲区来存储二进制数据。本文详细介绍了node.js中的Buffer类如何处理二进制数据。下面就不多说了。我们来看看详细的介绍。

创建缓冲区对象

首先,直接使用数组来初始化缓冲区

Vararr=[0,1,2] varbuf=新缓冲区(arr) console.log (buf)执行效果:

第二:直接用字符串初始化缓存

var str=' hello ' var buf=new buff(str)console . log(buf)执行效果:

在Node.js中,字符串的编码和解码将自动执行,默认使用UTF8编码。

缓冲区对象和字符串对象之间的转换

(1)toString

您可以使用缓冲区对象的toString方法,使用以下方法将存储在缓冲区对象中的数据转换为字符串:

buff . tostring([编码],[开始],[结束])可选参数1:用于指定Buffer对象中保存的文本编码格式,默认参数为UTF8。

可选参数2:以字节为单位指定转换数据的起始位置。

可选参数3:指定转换数据的结束位置,以字节为单位。

示例代码如下:

var buf=new Buffer('你为什么不迎风起床')console.log (buf.tostring ('utf8 ',9,12))console . log(buf . tostring(' utf8 ',12,buf.length))的效果如下:

安慰

(2)写

有时我们需要向创建的Buffer对象写入一个字符串,这样我们就可以使用Buffer对象的write方法。

Buf。write (string,[offset],[length],[encoded ign])必须有参数1:指定要写入的字符串

可选参数2-3:指定字符串转换为字节数据后的写入位置,字节数据的写入位置是从第一个偏移字节到偏移长度字节。

可选参数4:编码格式,默认utf8

代码如下:

Var buf=new Buffer('你为什么不迎风起床')buf.write('翱翔千里',0,buf . length)console . log(buf . tostring())运行如下:

安慰

(3)StringDecoder对象

在Node.js中,还可以使用StringDecoder对象将Buffer对象中的数据转换为字符串。此对象与Buffer对象的toString方法具有相同的功能,但它为utf8编码格式的字符串提供了更好的支持。

要使用StringDecoder对象,首先在Node.js中加载string_decoder模块,如下所示:

var stringdecode=require(' string _ decoder ')。Stringdecoder可以在加载string _ decoder模块后创建stringdecoder对象。方法如下:

vardecoder=new StringDecoder([编码])当需要将Buffer对象中的数据转换为字符串时,可以使用StringDecoder对象的write方法。在write方法中,可以使用参数指定要转换的Buffer对象。此方法将返回转换后的字符串。代码如下:

Decoder.write(Buffer)不错,比较一下Buffer对象的toString方法和更支持utf8的StringDecoder的write方法。

缓冲区的ToString方法如下:

//在UTF-8编码格式下,将一个字符转换为多个字节:var buf=new Buffer('为什么不从wind开始')console.log(buf)//0x是varstr1=newbuffer ([0xe9,0x98,0x81,0xe4,0xb8,0x8b,0xe4,0xbd])console . log(str 1 . tostring())varst R2=new Buffer([0x 95,0xe4,0xb8,0x8d,0xe9,0x9a,0x 88)

安慰

当然,您可以通过以下方式连接两个Buffer对象,然后使用toString方法将其中的数据转换为字符串。但是,当缓冲对象的长度较大时,此操作的性能将变得相对较低。

buffer.concat ([str1,str2])的写入方法。tostring()string decode如下:

//在UTF-8编码格式下,将1个文本转换为多个字节var buf=new Buffer('为什么不从wind开始')console . log(buf)//stringdecodervar string decoder=require(' string _ decoder ')。stringdecodervardecoder=new stringdecoder()//0x is varstr 1=new buffer([0xe9、0x98、0x81、0xe4、0xb8、0x8b、0xe4、0xbd])console . log(decoder . write(str 1))varstr 2=new buffer([0x 95、0xe4、0xb8、0x8d、0xe9、0x8a、0x8f、0xe 9、0x3、0x8e、0xe8、0xb5、0xb7]) console.log

安慰

谁支持更好一目了然。

缓冲区对象和JSON对象之间的转换

在Node.js中,可以使用JSON.stringify方法将Buffer对象中存储的数据转换为字符串,也可以使用JSON.parse方法将转换后的字符串还原为数组。

复制缓存数据

当需要将存储在Buffer对象中的二进制数据复制到另一个Buffer对象时,可以使用Buffer对象的复制方法,如下所示:

Buff.copy (targetBuffer、[targetstart]、[sourcestart]、[sourceend])必须有参数1:指定复制的目标缓冲区对象

可选参数2:指定目标缓冲区对象中写入数据的字节

可选参数3:指定从复制源Buffer对象获取数据时的起始位置,默认值为0

可选参数4:指定从复制源Buffer对象获取数据时的结束位置,默认值为复制源对象的长度

示例代码如下:

//target :将buf1 Buffer对象的内容复制到buf2 Buffer对象中。//复制目标的起始位置是buf2 Buffer对象中的第11个字节(写入在第11个字节之后开始)。var buf1=new Buffer('为什么不从wind开始')console . log(buf 1)varbuf 2=new buff er(128)buf 2 . fill(0)console . log(buf 2)//键码buf1.copy(buf2,10)//输出复制的buf 2 console . log(buf 2)//print buf 2 var string decoder=require(' string _ decoder ')。stringdecodervar解码器=new string decoder () console.log(解码器。以字符串形式写入(buf2))。运行效果如下:

安慰

缓冲类的类方法

(1)是一种填充方法

用于判断一个对象是否为Buffer对象。使用方法如下:

Buffer.isBuffer(objc)的示例代码如下:

var A=' abcde ' var B=new buffer(10)console.log(A的类型)console . log(B的类型)console . log('我是一个很棒的分隔符-') console.log(缓冲区。isbuffer (a)) console.log(缓冲区)

安慰

(2)字节长度法

可以使用字节长度方法计算指定字符串的字节数,如下所示:

Buffer.bytelength(字符串,[编码])必须有参数1:指定需要计算字节数的字符串

可选参数2:编码格式,默认utf8

示例代码如下:

Var str='你为什么不跟着风走' console.log (str。长度)console . log(buffer . byte length(str,' utf8 ')console . log(buffer . byte length(str,' base64 ')console . log(buffer . byte length(str,' utf16)

安慰

(3)等熵编码方法

IsEncoding方法用于检测字符串是否是有效的编码格式字符串。使用方法如下:

在等熵编码方法中,参数用于指定要检测的字符串。如果字符串是有效的编码格式字符串,则方法返回true,如果字符串不是有效的编码格式字符串,则方法返回false。

示例代码如下:

varstr1=' utf8' console.log的工作效果(缓冲区。isen coding(ST R1))varst R2=' utf1le ' console . log(缓冲区。isen coding(str 2))var str 3=' utf 11e ' console . log(缓冲区。isencoding (str3))如下:

安慰

摘要

以上就是本文的全部内容。希望这篇文章的内容对你的学习或工作有所帮助。有问题可以留言交流。

更多资讯
游戏推荐
更多+