欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nodejs-用二进制-v1.0.0

程序员文章站 2024-03-17 13:25:40
...

模块概览

Buffer是node的核心模块,开发者可以利用它来处理二进制数据,比如文件流的读写、网络请求数据的处理等。

简单示例

//创建
const buf = new Buffer([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);


//比较
// 例子一:编码一样,内容相同
var buf1 = Buffer.from('A');
var buf2 = Buffer.from('A');

console.log( buf1.equals(buf2) );  // true

// 例子二:编码一样,内容不同
var buf3 = Buffer.from('A');
var buf4 = Buffer.from('B');

console.log( buf3.equals(buf4) );  // false

// 例子三:编码不一样,内容相同
var buf5 = Buffer.from('ABC');  // <Buffer 41 42 43>
var buf6 = Buffer.from('414243', 'hex');

console.log(buf5.equals(buf6));

//连接

//拷贝
buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])

//查找
buf.indexOf(value[, byteOffset][, encoding])

//写入:buf.write(string[, offset[, length]][, encoding])
var buff = Buffer.alloc(20).fill('a');
console.log(buff.toString());  // aaaaaaaaaaaaaaaaaaaa

//转换
转成字符: buf.toString([encoding[, start[, end]]])
var buff = Buffer.from('hello');
console.log( buff.toString() );  // hello
console.log( buff.toString('utf8', 0, 2) );  // he

转成对象:buf.toJSON()
var buff = Buffer.from('hello');
console.log( buff.toJSON() );  // { type: 'Buffer', data: [ 104, 101, 108, 108, 111 ] }

//遍历:buf.values()、buf.keys()、buf.entries()
var buff = Buffer.from('abcde');

for(const key of buff.keys()){
    console.log('key is %d', key);
}
// key is 0
// key is 1
// key is 2
// key is 3
// key is 4

for(const value of buff.values()){
    console.log('value is %d', value);
}
// value is 97
// value is 98
// value is 99
// value is 100
// value is 101

for(const pair of buff.entries()){
    console.log('buff[%d] === %d', pair[0], pair[1]);
}
// buff[0] === 97
// buff[1] === 98
// buff[2] === 99
// buff[3] === 100
// buff[4] === 101

//截取:buf.slice([start[, end]])
var buff1 = Buffer.from('abcde');
console.log(buff1);  // <Buffer 61 62 63 64 65>

var buff2 = buff1.slice();
console.log(buff2);  // <Buffer 61 62 63 64 65>

var buff3 = buff1.slice(1, 3);
console.log(buff3);  // <Buffer 62 63>

buff3[0] = 97;  // parseInt(61, 16) ==> 97
console.log(buff1);  // <Buffer 62 63>