Node - Buffer(缓冲区)

後來 -
Node - Buffer(缓冲区)
Buffer(缓冲区)Buffer的结构和数组很像,操作方法和数组也类似数组中不能存储二进制文件,而Buffer就是专门用来存放二进制数据的

它的元素为16进制的两位数。一个元素就代表一个字节

所以Buffer中每一个元素的范围都是00-ff之间00-ff转换成二进制就是00000000-11111111,这也是我们计算机最底层的一个0或者1,我们称之为1位(bit),8bit = 1byte(字节)在Buffer中存储的是二进制数据,但是显示的时候都是以16进制显示

Buffer中内存不是通过JavaScript分配的,而是底层通过C++申请的,也就是我们可以直接通过Buffer来创建内存中的空间

let str = 'Hello World'

// 将一个字符串转换为Buffer
let bufStr = Buffer.from(str)
// 如何转换成字符串呢?
let newStr = bufStr.toString()

console.log(bufStr)
// <Buffer 48 65 6c 6c 6f 20 57 6f 72 6c 64>
console.log(newStr)
// Hello World
创建指定大小的BufferBuffer的大小,一旦创建好就能修改了

老的方法,Buffer构造函数的方式,不推荐使用,官方说即将废弃

// 创建一个10个字节的Buffer
let buf = new Buffer(10)

新的方式一:alloc

// 创建一个10个字节的Buffer
let buf = Buffer.alloc(10)
buf[0] = 66
buf[1] = 255
buf[2] = 0xaa // 这些写法是直接赋值一个16进制的数据,16进制的数据,就是`0x`开头

console.log(buf)
console.log(buff[2]) // 结果是170,为什么不是aa呢?因为只要数字在控制台或页面中输出,一定是10进制

新的方式二:allocUnsafe

// 创建一个10个字节的Buffer
// 和alloc基本一样,只是allocUnsafe创建的Buffer中可能会含有敏感数据
// 什么意思呢?alloc在创建的时候,会清空那一块内存,而allocUnsafe不会清空,也就是说之前的数据,可能会泄露出来
// 既然如此,为什么还要allocUnsafe呢?因为allocUnsafe的效率更高,但是我们正常来说还是使用alloc
let buf = Buffer.allocUnsafe(10)
console.log(buf)
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

node.jsbuffer

扩展阅读

加个好友,技术交流

1628738909466805.jpg