核心对象
8bit 比特 = 1Byte 字节
const buf = Buffer.from('test');
console.log(buf); // <Buffer 74 65 73 74> 每两位16进制字符表示一个8比特
const num = parseInt(74, 16); // 转回10进制
console.log(String.fromCharPoint(num)); // t ASCII码转回字符
字符集 unicode
字符编码
- UTF-32
全部用4个字节表示一个字符,占用空间非常大
- UTF-16
2个或4个字节表示一个字符
- UTF-8
最多4个字节表示一个字符0*******
110*****``10******
110*****``10******``10******
11110***``10******``10******``10******
作用
- 操作二进制数据流
- 实例类似于整数(0-255 用16进制的方式)数组,大小是固定的
- buffer的node代码不是在v8中申请,是node中C++层面实现的
支持更多的字符编码
npm install iconv
npm install iconv-lite
StringDecoder
const {StringDecoder} = require('string_decoder');
const decoder = new StringDecoder('utf8');
const buffer = Buffer.from('中文字符串');
for(var i=0; i<buffer.length; i+=5){
const b = Buffer.alloc(5);
buffer.copy(b, 0, i);
console.log(decoder.write(b));
}