Closed TokenYangForever closed 6 years ago
10, 01, 001, 1110, 00101011
1100
"L".charCodeAt(0)
// 创建一个大小为10的空buffer // 这个buffer只能容纳10字节 const buf1 = Buffer.alloc(10); // 创建一个带有内容的buffer const buf2 = Buffer.from("hello buffer");
// 查看buffer的结构 buf1.toJSON() // { type: 'Buffer', data: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } // 一个空的buffer buf2.toJSON() // { type: 'Buffer', data: [ 104, 101, 108, 108, 111, 32, 98, 117, 102, 102, 101, 114 ] } // toJSON方法以字符的Unicode Code Points来表示数据 // 查看buffer的大小 buf1.length // 10 buf2.length // 12. 创建时基于初始内容自动分配buffer大小 // 写数据到buffer中 buf1.write("Buffer really rocks!")
// 解码一个buffer buf1.toString() // 'Buffer rea' //啊哦,因为buf1的大小为10,所以无法容纳剩余的数据。
* 以上就是对buffer的一部分操作,更多内容参考node的官方文档。 * 在最后,我给你留下一个挑战,去阅读[zlib.js](https://github.com/nodejs/node/blob/master/lib/zlib.js)的源码,他是一个Node.js核心库,去看一下buffer操作二进制流数据的原理。这些最后转换成zip压缩的文件。
什么是二进制数据
10, 01, 001, 1110, 00101011
1100
的二进制形式。"L".charCodeAt(0)
。你会看到什么?数字76?没错,这就是字符串L的数字表达式,或者说是字符编码(Character Code)或代码点(Code Point)。但是计算机是如何知道哪个数字是对应的哪个字符呢?他怎么知道76就是对应的L?字符集(Character Sets)
字符编码(Character Encoding)
流(stream)
Buffer
操作Buffer
// 解码一个buffer buf1.toString() // 'Buffer rea' //啊哦,因为buf1的大小为10,所以无法容纳剩余的数据。