1. Buffer 相关
js 最初是被设计来处理 html的,因此它不善于处理二进制数据,只有数值和字符串类型。而 node 是基于 js 的,因为 node 需要实现一些譬如数据库通信、操作图像及文件上传等,只是用字符串来操作完成这些任务是相当困难的,且费资源,速度缓慢,还不安全。所以,node 就引入了一个二进制缓冲区 Buffer 来实现。
var buf = new Buffer(‘1234asdf‘);
console.log(buf[i]) // i ∈ [0, 7] eg: buf[1] 可能为任意随机值
var buffer = new Buffer("My name is Mobro Zhu");
var childBuffer = buffer.slice(11);
console.log(childBuffer)
console.log(childBuffer.toString())
console.log(buffer.toString()) // 缓冲区解码
// copy 方式
var childBuffer2 = new Buffer(11);
buffer.copy(childBuffer2, 0, 11)
// === buffer.copy(childBuffer2, 0, 11, 19)
console.log(childBuffer2.toString()); // Mobro Zhu
2. Buffer API (参考地址: https://nodejs.org/dist/latest-v10.x/docs/api/buffer.html)
Class Method: Buffer.alloc(size[, fill[, encoding]])
声明一个 Buffer; size 是必须参数。这里的 fill 可以是数字,字符串,但好像不能是数组,对象;而且,"12" 和 12 的结果是不相同的;
与此类似的有:
Buffer.allocUnsafe(size)
Buffer.alloc(size, fill) 永远不会使用这个内部的 Buffer 池,但如果 size 小于或等于 Buffer.poolSize 的一半, Buffer.allocUnsafe(size).fill(fill) 会使用这个内部的 Buffer 池.
Buffer.allocUnsafeSlow(size)
这个方法通过像大多数持久对象一样消除追踪与清理的需求,改善了性能与内存使用。
const buf = Buffer.alloc(10, "abc", "utf-8");
console.log(buf.toString()) // abc
//////
buf = Buffer.alloc(2)
buf.fill("12", "base64") // buf.fill(fill, encoding)
console.log(buf.toString("base64")) // 为什么不是 12,而是 19c=
// base64 的声明方式
const buf = Buffer.alloc(11, ‘aGVsbG8gd29ybGQ=‘, ‘base64‘);
console.log(buf);
常见的 API:
Buffer.byteLength(string[, encoding])
字符串的实际字节长度。
Buffer.from()
Buffer.compare(buf1, buf2)
类似 Array.compare()
Buffer.concat(list[, totalLength])
Buffer.from(array)
Buffer.from(arrayBuffer[, byteOffset[, length]])
Buffer.from(buffer)
Buffer.from(string[, encoding])
Buffer.from(object[, offsetOrEncoding[, length]])
Buffer.isBuffer(obj)
Buffer.isEncoding(encoding)
Buffer.poolSize
缓冲池
Buffer.concat([buf1, buf2, buf3], totalLength)
常见的实例 API:
buf.buffer
指向创建该 Buffer 的底层的 ArrayBuffer 对象
// buf.buffer
const arrayBuffer = new ArrayBuffer(16);
const buffer = Buffer.from(arrayBuffer);
console.log(buffer.buffer === arrayBuffer);
沾沾人气听听热闹,人才不会固步自封,被憋死在孤独的绝壁里。
人间烟火是好东西,琐碎而温暖。
一一 俗念亲 《每次跳楼,都看见那厮在铺救生气垫》
原文:https://www.cnblogs.com/Mobro/p/9933385.html