手机版

nodejs二进制和缓冲区的介绍和使用

时间:2021-08-21 来源:互联网 编辑:宝哥软件园 浏览:

缓冲区简介

在javascript中,数据处理是以字符串的形式进行的,而二进制数据不方便处理,所以Buffer用来读取或操作二进制数据。

总之:Buffer类是一个全局变量,用来直接处理二进制数据,提供工具类方法。

官网对Buffer的解释很明确,所以官网不会抄袭。下面是一些常用的场景。

要缓冲的对象

在操作文件或io的场景中,我们需要将对象转换成二进制数据流。

引用官方文件

Buffer.from(数组)返回一个新的Buffer,其中包含所提供的八位字节数组的副本。缓冲。from (ArrayBuffer [,byteoffset [,length]]返回一个新的缓冲区,该缓冲区与给定的ArrayBuffer共享相同的分配内存。Buffer.from(Buffer)返回一个包含给定缓冲区内容副本的新缓冲区。Buffer.from(字符串[,编码])返回一个包含所提供字符串副本的新缓冲区。Buffer.alloc (size [,fill [,encoding]])返回新创建的指定大小的初始化缓冲区。此方法比缓冲区慢。allocsafe(大小),但它可以确保新创建的缓冲区实例永远不会包含潜在的敏感旧数据。缓冲。allocsafe(大小)和缓冲区。allocunaflow(size)分别返回指定大小的新的未初始化缓冲区。由于缓冲区未初始化,分配的内存片段可能包含敏感的旧数据。栗子如下

const obj={ name : ' test ' } const buffer=buffer。来自(JSON。stringify(obj),' utf8 ')//默认编码是一个字符串,utf8 Buffer对象被转换为其他机制

我们可以看到Buffer对象是Uint8Array的一个实例,所以我们可以使用迭代器来获取Buffer中数组的值。

1.Buffer对象被转换为二进制字符串,这便于获取数组中的值。通过使用Number.toString(基数)方法,将整形转换为二进制字符串,最后将每个数值的二进制字符串拼接在一起。但是为了方便后续的二进制运算,我们约定了二进制的长度,因为Buffer数组是0到255之间的整数数组,255的二进制是8位,所以我们在转换过程中填充了不到8位,当然这要看具体的场景。

bytesToBinary(字节){ const length=bytes.length让结果=' ';for(设I=0;一、长度;i ) { const binStr=Number(字节[i])。toString(2)结果=“0”。重复(8-BinStr . length)BinStr;//少于八位的数字以{ 0 }为前缀返回result . tostring();}2.缓冲区到十六进制的转换类似,如下所示

bytesToBinary(字节){ const length=bytes.length让结果=' ';for(设I=0;一、长度;i ) { const binStr=Number(字节[i])。toString(16)结果=“0”。重复(2-BinStr . length)BinStr;//少于两位的数字以{ 0 }为前缀返回result . tostring();}摘要

网上关于Buffer的文章很多,但是我觉得没有官网写的那么清楚,建议大家直接看文档。

后面我们会继续补充工作中遇到的与Buffer相关的使用场景。毕竟,工具类函数只有在特定场景中分析时才更有价值。

摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。谢谢你的支持。

版权声明:nodejs二进制和缓冲区的介绍和使用是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。