1.Buffer.byteLength()
返回一个字符串的实际字节长度。 这与 String.prototype.length不同,因为那返回字符串的字符数。
/* 返回一个字符串的实际字节长度 */
let str1 = "hello world";
let str2 = "中国";
console.log(Buffer.byteLength(str1)); // 11
console.log(Buffer.byteLength(str2)); // 6
2.Buffer.from(array)
Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)
Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。
Buffer.from(buffer): 复制传入的 Buffer 实例的数据,并返回一个新的 Buffer 实例
Buffer.from(string[, encoding]): 返回一个被 string 的值初始化的新的 Buffer 实例
console.log(Buffer.from([1, 2, 3])); // <Buffer 01 02 03>
let buf1 = Buffer.from("hello world"); // <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
3.Buffer.isBuffer(obj)
如果 obj 是一个 Buffer 则返回 true ,否则返回 false
console.log(Buffer.isBuffer({ 'a': 1 })); // false
console.log(Buffer.isBuffer(Buffer.from([1, 2, 3]))); // true
4.Buffer.concat(obj)
合并buf成为新的字符串
let str1 = "hello world";
let str2 = "中国";
let buf1 = Buffer.from(str1); // <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
let buf2 = Buffer.from(str2);
let buf3 = Buffer.concat([buf1,buf2]);
console.log(buf3.toString()); // hello world中国
5.buf.fill(str,start,end)
str为替换的字符串,start为替换开始索引(包含),end为替换结束索引(不包含)
let buf1 = Buffer.from("hello world");
let newBuf = buf1.fill("*",2,5);
console.log(newBuf.toString()); // he*** world
常用属性
- buf.length 长度
- buf.toString() 转为字符串
- buf.equals() 判断是否相等
- buf.fill() 替换
- buf.indexOf() 是否包含,如果包含返回位置值,不包含返回-1
const buf = Buffer.from('hello world');
const buf2 = Buffer.from('hello world!');
console.log(buf.length); // 15
console.log(buf.toString()); // hello world
console.log(buf.fill(10, 2, 6)); // <Buffer 68 65 0a 0a 0a 0a 77 6f 72 6c 64> 这里从第3个到第6个都被替换成了0a,a就是16进制的数字10
console.log(buf.equals(buf2)); // false
console.log(buf.indexOf('h')); // 0