0
点赞
收藏
分享

微信扫一扫

buffer

什么是Buffer

buufer是处理二进制字节的一种方式,常用于TCP流、文件系统操作等场景。

Buffer的存储方式:  

* 我们可以将Buffer看成是一个存储二进制的数组;

* 这个数组中的每一项,可以保存8位二进制:00000000(也就是一个字节)。

为什么是8位呢?

· 在计算机中,很少的情况我们会直接操作一位二进制,因为二进制存储的数据是非常有限的;

· 所以,通常会将8位合在一起,作为一个单元,这个单元称之为一个字节(byte);

· 也就是说1byte=8bit,1kb=1024byte,1M=1024kb;

· 比如很多编程语言中的int类型是4个字节,long类型是8个字节的个数;

· TCP传输的是字节流,在写入和读取时都需要说明字节的个数;

· RGB的值分别都是255,所以本质上在计算机中都是用一个字节存储的;

例:

(1)将字符串存储到Buffer中(默认编码方式:utf8)

const s = 'abc吕'
// 方法一:(已经过时了该方法)
const r = new Buffer(s) // 创建Buffer
// 方法二: (一个中文一般占三个字节)
const r = Buffer.from(s)
console.log(r)

 下边显示的是16进制

buffer_存储方式

(2)对buffer进行解码(默认解码方式:utf8):

const s = 'abc吕'
const r = Buffer.from(s)
console.log('对字节进行解码:', r.toString()) // 'abc吕'

Buffer类

buffer_字符串_02

 Buffer缓冲区大小

缓冲区大小在创建时确定,默认大小为8kb,这是用于缓冲池的预分配的内部 ​​Buffer​​ 实例的大小(以字节为单位),该值可以修改。

// 8192byte -> 8kb
console.log(Buffer.poolSize)

实例化Buffer

Buffer.from支持四种参数类型

· Buffer.from (string/buffer/array/abject)

const buf1 = Buffer.from('test', 'utf-8') // node默认采用utf-8编码方式
console.log(r1) // <Buffer 74 65 73 74>
const buf2 = Buffer.from(buf1) // buf1的副本,修改buf2不会影响buf1

编码

Buffer目前支持一下几种编码格式:

· ascii

· utf8

· utf16le

· base64

· binary

· hex

Buffer和string转换

Buffer.from(string, [, encoding]) 字符串转为Buffer

const buf = Buffer.from('test', 'utf-8') // <Buffer 74 65 73 74>

Buffer.toString([encoding]) Buffer转字符串

const buf = Buffer.from('test')
const str = buf.toString() // 'test'

Buffer拼接

Buffer.concat(list) 方法可以把多个Buffer实例拼接为一个Buffer实例

const buf1 = Buffer.from('a')
const buf2 = Buffer.from('b')
const buf3 = Buffer.from('c')

const buf = Buffer.concat([buf1, buf2, buf3])
console.log(buf) // <Buffer 61 62 63>

Buffer其它常用API

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

const buf = Buffer.from('a')
console.log(Buffer.isBuffer(buf)) // true

 


举报

相关推荐

0 条评论