node.js第三天

创建buffer类

Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0
Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据
Buffer.allocUnsafeSlow(size)
Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)
Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。
Buffer.from(buffer): 复制传入的 Buffer 实例的数据,并返回一个新的 Buffer 实例
Buffer.from(string[, encoding]): 返回一个被 string 的值初始化的新的 Buffer 实例

//长度为10被0填充
const buff = Buffer.alloc(10);
//用1填充
const buff1 = Buffer.alloc(10, 1);
//不被填充
const buff2 = Buffer.allocUnsafe(10);
//用数组初始化
const buff3 = Buffer.from([1, 2, 3]);
// 创建一个包含 UTF-8 字节 [0x74, 0xc3, 0xa9, 0x73, 0x74] 的 Buffer。
const buf5 = Buffer.from('tést');
console.log(buf5);
//写入缓冲区
// buf.write(string[, offset[, length]][, encoding])
buf = Buffer.alloc(20);
var len = buff.write("他");
console.log(len);
//从缓冲区读取数据
var str = buff.toString();
console.log(str);
//将buffer装换成json
var json = buff.toJSON();
console.log(json);

写入缓冲区

buf.write(string[, offset[, length]][, encoding])

string - 写入缓冲区的字符串。

offset - 缓冲区开始写入的索引值,默认为 0 。

length - 写入的字节数,默认为 buffer.length

encoding - 使用的编码。默认为 ‘utf8’ 。

const buf4 = Buffer.alloc(19);
buf4.write("uhjgfhy");
let str = buf4.toString();
console.log(buf4); //<Buffer 75 68 6a 67 66 68 79 00 00 00 00 00 00 00 00 00 00 00 00>
console.log(str); //uhjgfhy

读取数据

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

encoding - 使用的编码。默认为 ‘utf8’ 。

start - 指定开始读取的索引位置,默认为 0。

end - 结束位置,默认为缓冲区的末尾。

const buf4 = Buffer.alloc(19);
buf4.write("uhjgfhy");
let str = buf4.toString();


转化为JSON

buf.toJSON()

const buf = Buffer.from([1, 2, 3]);
let json = buf.toJSON();
console.log(json)//{ type: 'Buffer', data: [ 1, 2, 3 ] }

缓冲区合并

Buffer.concat(list[, totalLength])
list - 用于合并的 Buffer 对象数组列表。

totalLength - 指定合并后Buffer对象的总长度。

var buffer1 = Buffer.from(('1'));
var buffer2 = Buffer.from(('2'));
var buffer3 = Buffer.concat([buffer1, buffer2]);
console.log("buffer3 内容: " + buffer3.toString());//buffer3 内容: 12

缓冲区比较

buf.compare(otherBuffer);
返回一个数字,表示 buf 在 otherBuffer 之前,之后或相同。

拷贝缓冲区

buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
targetBuffer - 要拷贝的 Buffer 对象。

targetStart - 数字, 可选, 默认: 0

sourceStart - 数字, 可选, 默认: 0

sourceEnd - 数字, 可选, 默认: buffer.length

let buf1 = Buffer.from("abcd");
let buf2 = Buffer.from('efg');
buf2.copy(buf1, 2);//将buf2插入到buf1的第二位置并且buf1 2后面的都没有了
console.log(buf1.toString());//abef

缓冲区裁剪

buf.slice([start[, end]])
start - 数字, 可选, 默认: 0

end - 数字, 可选, 默认: buffer.length
不包含end这个位置的值

let buf1 = Buffer.from("abcd");
let buf2 = buf1.slice(0, 2);//ab 
console.log(buf2.toString()); //ab

缓冲区长度

buf.length()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值