一、JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一个与String对等的全局构造函数Buffer来提供对二进制数据的操作
// 可以将文件的内容读取到Buffer实例,或者是直接构造Buffer实例。
var hello = new Buffer([ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]);
// Buffer与字符串类似,除了可以用.length属性得到字节长度外,还可以用[index]方式读取指定位置的字节,例如:
bin[0]; // => 0x68;
// Buffer与字符串能够互相转化,例如可以使用指定编码将二进制数据转化为字符串:
hello.toString('utf-8'); // hello
// 将字符串转换为二进制数据
var bin = new Buffer('hello', 'utf-8'); // <Buffer 68 65 6c 6c 6f>
// String和Buffer两者时间的区别
// String是只读的,并且对字符串的任何修改得到的都是一个新字符串,原字符串保持不变
// Buffer,可以做指针操作的C语言数组。例如,可以用[index]方式直接修改某个位置的字节
// 在Buffer中,想要实现Copy的功能需要以下步骤
// 1. 创建一个新的Buffer实例(一块内存区) 通过.copy方法把原Buffer中的数据复制过
// Buffer将JS的数据处理能力从字符串扩展到了任意二进制数据。