博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node随笔-二进制数组buffer
阅读量:5138 次
发布时间:2019-06-13

本文共 2167 字,大约阅读时间需要 7 分钟。

Buffer简介

在 ECMAScript 2015 (ES6) 引入  之前,JavaScript 语言没有读取或操作二进制数据流的机制。 Buffer 类被引入作为 Node.js API 的一部分,使其可以在 TCP 流或文件系统操作等场景中处理二进制数据流。

 现已被添加进 ES6 中,Buffer 类以一种更优化、更适合 Node.js 用例的方式实现了  API。

Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的、且在 V8 堆外分配物理内存。 Buffer 的大小在被创建时确定,且无法调整。

Buffer 类在 Node.js 中是一个全局变量,因此无需使用 require('buffer').BufferBuffer 中元素为16进制的Number类型,大小为8b

Buffer常用的方法

Buffer.from()  将字符串转换为buffer数据

Buffer.alloc(10) 创建一个指定长度为10的buffer数据,改方法在创建内存空间的时候,同时将数据清空。

Buffer.allocUnsafe(10) 创建一个指定长度为10的buffer数据,改方法在创建内存空间的时候,内存空间中的数据没有清空,可能含有敏感数据。

Buffer.byteLength(string[, encoding]) 返回string在内存中分配字节长度

Buffer.isBuffer(buf) 判断buf是否为Buffer对象

 

buf.buffer

buffer 属性指向创建该 Buffer 的底层的 对象。

const arrayBuffer = new ArrayBuffer(16);const buffer = Buffer.from(arrayBuffer);console.log(buffer.buffer === arrayBuffer);// 输出: true

buf.equals(otherBuffer) buf 与 otherBuffer 具有完全相同的字节,则返回 true,否则返回 false

例子:

const buf1 = Buffer.from('ABC'); const buf2 = Buffer.from('414243', 'hex'); const buf3 = Buffer.from('ABCD'); // 输出: true console.log(buf1.equals(buf2)); // 输出: false console.log(buf1.equals(buf3));

buf.fill(value[, offset[, end]][, encoding]) 该方法与类似

buf.includes(value[, byteOffset][, encoding])

  • value  |  |  要搜索的值
  • byteOffset  buf 中开始搜索的位置。默认: 0
  • encoding  如果 value 是一个字符串,则这是它的字符编码。 默认: 'utf8'
  • 返回:  如果 buf 找到 value,则返回 true,否则返回 false

相当于 。

例子:

const buf = Buffer.from('this is a buffer'); // 输出: true console.log(buf.includes('this')); // 输出: true console.log(buf.includes('is')); // 输出: true console.log(buf.includes(Buffer.from('a buffer'))); // 输出: true // (97 是 'a' 的十进制 ASCII 值) console.log(buf.includes(97)); // 输出: false console.log(buf.includes(Buffer.from('a buffer example'))); // 输出: true console.log(buf.includes(Buffer.from('a buffer example').slice(0, 8))); // 输出: false console.log(buf.includes('this', 4));
 

Buffer与字符编码

Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。

例子:

const buf = Buffer.from('hello world', 'ascii'); // 输出 68656c6c6f20776f726c64 console.log(buf.toString('hex')); // 输出 aGVsbG8gd29ybGQ= console.log(buf.toString('base64'));

 

 

转载于:https://www.cnblogs.com/xiaowang0808/p/8492522.html

你可能感兴趣的文章
spring 事务管理
查看>>
VS2008 去掉msvcr90的依赖
查看>>
当前记录已被另一个用户锁定
查看>>
Node.js 连接 MySQL
查看>>
那些年,那些书
查看>>
注解小结
查看>>
java代码编译与C/C++代码编译的区别
查看>>
Bitmap 算法
查看>>
转载 C#文件中GetCommandLineArgs()
查看>>
list control控件的一些操作
查看>>
SNF快速开发平台MVC-EasyQuery-拖拽生成SQL脚本
查看>>
LVM快照(snapshot)备份
查看>>
绝望的第四周作业
查看>>
一月流水账
查看>>
npm 常用指令
查看>>
20几个正则常用正则表达式
查看>>
TextArea中定位光标位置
查看>>
非常棒的Visual Studo调试插件:OzCode 2.0 下载地址
查看>>
判断字符串在字符串中
查看>>
properties配置文件读写,追加
查看>>