核心对象
8bit 比特 = 1Byte 字节

  1. const buf = Buffer.from('test');
  2. console.log(buf); // <Buffer 74 65 73 74> 每两位16进制字符表示一个8比特
  3. const num = parseInt(74, 16); // 转回10进制
  4. 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******

作用

  1. 操作二进制数据流
  2. 实例类似于整数(0-255 用16进制的方式)数组,大小是固定的
  3. buffer的node代码不是在v8中申请,是node中C++层面实现的

支持更多的字符编码

  1. npm install iconv
  2. npm install iconv-lite

StringDecoder

  1. const {StringDecoder} = require('string_decoder');
  2. const decoder = new StringDecoder('utf8');
  3. const buffer = Buffer.from('中文字符串');
  4. for(var i=0; i<buffer.length; i+=5){
  5. const b = Buffer.alloc(5);
  6. buffer.copy(b, 0, i);
  7. console.log(decoder.write(b));
  8. }