Appearance
Buffer
是一个类似于数组的对象,用于表示固定长度的字节序列。
Buffer大小固定且无法调整,性能较好,可以直接对计算机内存进行操作,每个元素的大小为1字节。
注意!
16位系统中,1字=2字节=16bit,即 1word = 2Byte = 16bit
32位系统中,1字=4字节=32比特,即 1word = 4Byte = 32bit
64位系统中,1字=8字节=64比特,即 1word = 8Byte = 64bit
一些方法
javascript
// 1. alloc
// alloc创建时会清空每个二进制位
const buf1 = Buffer.alloc(10);
console.log(buf1); // 输出 <Buffer 00 00 00 00 00 00 00 00 00 00>
// 2. allocUnsafe
// 不会清空每一个二进制位,也就是会有旧数据
const buf2 = Buffer.allocUnsafe(10);
console.log(buf2); // 输出 <Buffer 00 00 00 00 00 00 00 00 00 00>
// 3. from
const buf3 = Buffer.from('10');
console.log(buf3); // 输出 <Buffer 31 30>
一些转换与使用
javascript
// 1. 可以转换字符串
const buf1 = Buffer.from('Hello');
console.log(buf1); // 输出 <Buffer 48 65 6c 6c 6f>
// 2. 可以转换数组
const buf2 = Buffer.from(['1','2','3']);
console.log(buf2); // 输出 <Buffer 01 02 03>
// 3. 可以以数组方式使用
const buf3 = Buffer.from('Hello');
console.log(buf3[0]); // 输出 72
// 4. 可以赋值
const buf4 = Buffer.from('Hello');
buf4[0] = 66;
console.log(buf4[0]); // 输出 66
// 5. 如果溢出,舍弃高位
const buf5 = Buffer.from('Hello');
buf5[0] = 366;
console.log(buf5); // 输出 <Buffer 6e 65 6c 6c 6f>
// 6. UTF-8中文占位三字节
const buf6 = Buffer.from('你好');
console.log(buf6); // 输出 <Buffer e4 bd a0 e5 a5 bd>
// 补位示例
const buf = Buffer.from([105,'2','3'])
console.log(buf[0].toString(2).padStart(8,'0')); // 输出 01101001