nodejs二进制与Buffer的介绍与使用

 更新时间:2019年07月11日 11:41:06   作者:小黎也   我要评论
这篇文章主要给大家介绍了关于nodejs二进制与Buffer的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用nodejs具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

Buffer 介绍

javascript 中对数据处理都是以字符串的形式,而对于二进制数据就不便于处理,所以 Buffer 便是用于读取或操作二进制数据都对象。

一句话概括: Buffer 类是一个全局变量,用于直接处理二进制数据,提供工具类方法。

官网上关于 Buffer 解释的非常清楚,所以就不再拷贝官网,这里列举一些使用较为频繁的场景。

对象转换成Buffer

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

引用官方文档

  • Buffer.from(array) 返回一个新的 Buffer,其中包含提供的八位字节数组的副本。
  • Buffer.from(arrayBuffer[, byteOffset [, length]]) 返回一个新的 Buffer,它与给定的 ArrayBuffer 共享相同的已分配内存。
  • Buffer.from(buffer) 返回一个新的 Buffer,其中包含给定 Buffer 的内容的副本。
  • Buffer.from(string[, encoding]) 返回一个新的 Buffer,其中包含提供的字符串的副本。
  • Buffer.alloc(size[, fill[, encoding]]) 返回一个指定大小的新建的的已初始化的 Buffer。 此方法比 Buffer.allocUnsafe(size) 慢,但能确保新创建的 Buffer 实例永远不会包含可能敏感的旧数据。
  • Buffer.allocUnsafe(size) 和 Buffer.allocUnsafeSlow(size) 分别返回一个指定大小的新建的未初始化的 Buffer。 由于 Buffer 是未初始化的,因此分配的内存片段可能包含敏感的旧数据。

栗子如下

const obj = {
 name:'test'
}
const buffer = Buffer.from(JSON.stringify(obj),'utf8') // 默认编码是 utf8 

Buffer 对象转换成其它机制的字符串

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


1、Buffer 对象转二进制字符串,便利获取到数组中的值,通过 Number.toString(radix) 方法,将整形转换成二进制字符串,最后将各个数值的二进制字符串拼接起来即可。但为了后续对二进制操作方便,所以我们约定好二进制的长度,因为 Buffer 数组是在 0 到 255 之间的整数数组,255 的二进制是 8 位,所以我们在转换过程中把不足八位的前置补零,当然这还是得看具体的场景.

bytesToBinary(bytes) {
 const length = bytes.length;
 let result = '';
 for (let i = 0; i < length; i++) {
  const binStr = Number(bytes[i]).toString(2)
  result += '0'.repeat(8 - binStr.length) + binStr; // 不足八位前置补0
 }
 return result.toString();
}

2、Buffer转成 16 进制也是类似,如下

bytesToBinary(bytes) {
 const length = bytes.length;
 let result = '';
 for (let i = 0; i < length; i++) {
  const binStr = Number(bytes[i]).toString(16)
  result += '0'.repeat(2 - binStr.length) + binStr; // 不足二位前置补0
 }
 return result.toString();
}

小结

关于 Buffer 的介绍网上有很多文章,但我觉得都不如官网写的清晰,所以建议大家直接看文档。

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对澳门金沙网上娱乐的支持。

相关文章

  • Linux CentOS系统下安装node.js与express的方法

    Linux CentOS系统下安装node.js与express的方法

    这篇文章主要给大家介绍了在Linux CentOS系统下安装node.js与express的方法,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • 使用npm发布Node.JS程序包教程

    使用npm发布Node.JS程序包教程

    这篇文章主要介绍了使用npm发布Node.JS程序包教程,本文讲解了配置package.json、注册npm帐号、发布程序包等内容,需要的朋友可以参考下
    2015-03-03
  • 详解NODEJS基于FFMPEG视频推流测试

    详解NODEJS基于FFMPEG视频推流测试

    本篇文章主要介绍了详解NODEJS基于FFMPEG视频推流测试,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 详解本地Node.js服务器作为api服务器的解决办法

    详解本地Node.js服务器作为api服务器的解决办法

    本篇文章主要介绍了详解本地Node.js服务器作为api服务器的解决办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • node.js中的url.resolve方法使用说明

    node.js中的url.resolve方法使用说明

    这篇文章主要介绍了node.js中的url.resolve方法使用说明,本文介绍了url.resolve的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 初始Nodejs

    初始Nodejs

    本文属于nodejs的基础知识介绍篇,从nodejs的基本概念,到架构示意图,同步异步等方面做了详细的解答,是篇非常不错的文章
    2014-11-11
  • Node.js如何优雅的封装一个实用函数的npm包的方法

    Node.js如何优雅的封装一个实用函数的npm包的方法

    这篇文章主要介绍了Node.js如何优雅的封装一个实用函数的npm包的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • nodejs教程之制作一个简单的文章发布系统

    nodejs教程之制作一个简单的文章发布系统

    本文主要讲述了使用nodejs制作一个简单的文章发布系统,使用mongodb金沙国际官网,时间比较紧,功能做的也比较简单,仅仅是增删改查,外加附近上传,有相同需求的小伙伴可以参考下
    2014-11-11
  • node.js 模块和其下载资源的镜像设置的方法

    node.js 模块和其下载资源的镜像设置的方法

    这篇文章主要介绍了node.js 模块和其下载资源的镜像设置的方法,在设置淘宝镜像共有三种方法,每种方法通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-09-09
  • Node.js开发第三方微信公众平台

    Node.js开发第三方微信公众平台

    这篇文章主要介绍了Node.js开发第三方微信公众平台的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论