目录
  1. 1. Buffer
    1. 1.1. 创建指定大小Buffer
      1. 1.1.1. alloc()与allocUnsafe()区别
  2. 2. 总结
带你3步走看懂Node.JS中的Buffer

Buffer

  • JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

  • Buffer的结构和数组很像,操作的方法也和数组类似

  • 数组中不能存储二进制的文件,而buffer就是专门用来存储二进制数据
  • 使用buffer不需要引入模块,直接使用即可
  • 在buffer中存储的都是二进制数据,但是在显示时都是以16进制的形式显示
    • buffer中每一个元素的范围是从$00 - ff$ ,$0 - 255$
var str = "Hello 尚硅谷";
//将一个字符串保存到buffer中
var buf = Buffer.from(str);

console.log(buf.length); //占用内存的大小
console.log(str.length);//字符串的长度
console.log(buf); // <Buffer 48 65 6c 6c 6f 20 e5 b0 9a e7 a1 85 e8 b0 b7>

创建指定大小Buffer

Buffer的大小一旦确定,则不能修改,Buffer实际上是对底层内存的直接操作

//创建一个10个字节的buffer
var buf2 = Buffer.alloc(10);
var buf3 = Buffer.allocUnsafe(10); // 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据
console.log(buf2[0]) //只要数字在控制台或页面中输出一定是10进制
console.log(buf2[0].toString(16)); // 转16进制输出
console.log(buf2[0].toString(2)); // 转2进制输出

var buf4 = Buffer.from("我是一段文本数据");
console.log(buf4.toString()); // 将缓冲区中的数据转换为字符串

alloc()与allocUnsafe()区别

  • alloc创建指定空间的内存,并将当前空间里的数据清空
  • allocUnsafe分配了空间,不会清空数据。(可能会包括之前被使用过的数据)

总结

  • Buffer.from(str) 将一个字符串转换为buffer
  • Buffer.alloc(size) 创建一个指定大小的Buffer
  • Buffer.alloUnsafe(size) 创建一个指定大小的Buffer,但是可能包含敏感数据
  • buf.toString() 将缓冲区中的数据转换为字符串
文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-05/30/%E5%AD%A6%E4%B9%A0/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0/NodeJS/Buffer%E7%BC%93%E5%86%B2%E5%8C%BA/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论