node笔记(四) Buffer

本文介绍了Node.js中Buffer的基本用法及常见API的应用案例,包括Buffer的创建、字符串转换、数据填充、比较及合并等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Buffer主要用于操作二进制流,Buffer类在全局作用域中,因此可以直接用,无需用require引入,Buffer类似于整数数组,但是不同的是它的长度是固定的,无法改变。C++代码在V8堆外分配物理内存。

// 创建一个长度为10,且用9填充的Buffer
const buff1 = Buffer.alloc(10,9)
console.log(buff1)


/*
allocUnsafe与alloc方法类似,不同的是它没有实例化,所以调用的时候和可能有老数据,因此使用之前要使用 fill() 或 write() 重写。最后补充一点它的速度比alloc快,但是介意一般情况使用alloc
*/

// 创建一个包含1,2,4的Buffer
const buff2 = Buffer.from([1,2,5])
console.log(buff2)

下面总结几个比较常用的api

1.Buffer.byteLength() 返回字符串的实际字节长度

const buff3 = Buffer.byteLength("hello");
const buff4 = Buffer.byteLength("你好");
console.log(buff3)
console.log(buff4)

2.Buffer.isBuffer(obj),如果 obj 是一个 Buffer,则返回 true,否则返回 false

const buff5 = Buffer.isBuffer(Buffer.from([1,3,5]))
const buff6 = Buffer.isBuffer({})
console.log(buff5,buff6);

3.Buffer.concat(),合并buffer并返回一个新的Buffer

const buff1 = Buffer.from("I ")
const buff2 = Buffer.from("name ")
const buff3 = Buffer.from("lixian")
const buf = Buffer.concat([buff1,buff2,buff3])
console.log(buf.toString())

4.buf.length,返回内存中分配给 buf 的字节数。 不一定反映 buf 中可用数据的字节量。

const buf = Buffer.alloc(1225)
console.log(buf.length)
const buf2 = Buffer.from('I am girl')
console.log(buf2.length)

5.buf.toString([encoding[, start[, end]]])

根据 encoding 指定的字符编码将 buf 解码成字符串。hex将buf1转为16进制,具体内容可查看文档http://nodejs.cn/api/buffer.html#buffer_buf_tostring_encoding_start_end

const buf1 = Buffer.from("asdfasdf");
console.log(buf1.toString('hex'));

6.buf.fill(value[, offset[, end]][, encoding])

  • value <string> | <Buffer> | <Uint8Array> | <integer> 用来填充 buf 的值。
  • offset <integer> 开始填充 buf 的偏移量。默认值: 0
  • end <integer> 结束填充 buf 的偏移量(不包含)。默认值: buf.length
  • encoding <string> 如果 value 是字符串,则指定 value 的字符编码。默认值: 'utf8'
    const buf1 = Buffer.allocUnsafe(10);
    console.log(buf1)
    console.log(buf1.fill(10,2,6))

     

7. buf.equals()

比较两个 buffer的值,如果相等返回true,如果不想等返回false

const buf1 = Buffer.from('abc');
const buf2 = Buffer.from('abc')
console.log(buf1.equals(buf2))

8.buf.indexOf() 查找指定的值

buf 中首次出现 value 的索引,如果 buf 没包含 value 则返回 -1

const buf1 = Buffer.from('test');
console.log(buf1.indexOf('st'))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值