NodeJS3-2基础API----Buffer(缓冲器)
Buffer(缓冲器)
- Buffer是用于处理二进制数据流的
- 实例类似整数数组,大小固定(实例化之后,是多大就多大,不能进行变更)
- C++代码在V8 对外分配物理内存
- Buffer是全局变量,没必要使用require来引用
//常见一个规定长度,默认用0填充
console.log(Buffer.alloc(10));
console.log(Buffer.alloc(20));
// 用2填充
console.log(Buffer.alloc(5,2));
// 创建一个长度为 5、且未初始化的 Buffer。这个方法比调用 Buffer.alloc() 更快,
// 但返回的 Buffer 实例可能包含旧数据,因此需要使用 fill() 或 write() 重写。
console.log(Buffer.allocUnsafe(5,2));
console.log(Buffer.from([1,2,3]));
console.log(Buffer.from('test'));
//指定编码
console.log(Buffer.from('test','base64'));
运行结果
静态的属性和方法(Buffer类本身的属性和方法)[常用的]
Buffer.byteLength & Buffer.isBuffer() & Buffer.concat()
// 实际占了几个字节
console.log(Buffer.byteLength('test'));
//一个中文三个字节
console.log(Buffer.byteLength('测试')); console.log(Buffer.isBuffer({}));
console.log(Buffer.isBuffer(Buffer.from([1,2,3]))); const buf1 = Buffer.from('This')
const buf2 = Buffer.from(' is ')
const buf3 = Buffer.from('a ')
const buf4 = Buffer.from('test ')
const buf5 = Buffer.from('!') const buf = Buffer.concat([buf1,buf2,buf3,buf4,buf5])
console.log(buf.toString());
运行结果:
实例的常用属性和方法(6种)
buf.length buf.toString() buf.fill()
buf.equals() buf.indexOf() buf.copy()
//1.buf.length
const buf = Buffer.from('This is a test!')
console.log(buf.length); //
const buf2 = Buffer.alloc(10);
const buf3 = Buffer.allocUnsafe(10); //默认不填充
buf2[0]=2
//下面证明,就算默认不填充,可是长度是根据你一开始创建的大小来控制,与填不填充内容无关
console.log(buf2.length); //
console.log(buf3.length); // //2.buf.toString()
console.log(buf.toString()); //默认utf-8 This is a test
console.log(buf.toString('base64')); //VGhpcyBpcyBhIHRlc3Qh //3.buf.fill() alloc是自动填充0,但是可以用fill()来填充其他的值
const buf4 = Buffer.allocUnsafe(10)
console.log(buf4);
console.log(buf4.fill(10,2,6));//fill(像填充的内容,从哪里开始,从哪里结束) //4.buf.equals() 两个Buffer的内容是否相等
const buf5 = Buffer.from('test')
const buf6 = Buffer.from('test')
const buf7 = Buffer.from('test!') console.log(buf5.equals(buf6)); //true
console.log(buf5.equals(buf7)); //false //5.buf.indexOf() buf5=test
console.log(buf5.indexOf('s')); //找到就返回所在位置的index(从0开始)
console.log(buf5.indexOf('a'));//找不到就返回-1 //6.buf.copy()
const buf8 = Buffer.allocUnsafe(10).fill('*')
const buf9 = Buffer.allocUnsafe(10).fill('!')
//拷贝'buf8'中第 3-6字节数据到'buf9'第4个偏移量开始
buf8.copy(buf9,4,3,6)
console.log(buf9.toString()); // !!!!***!!!
NodeJS3-2基础API----Buffer(缓冲器)的更多相关文章
- Linux高性能server编程——Linux网络基础API及应用
Linux网络编程基础API 具体介绍了socket地址意义极其API,在介绍数据读写API部分引入一个有关带外数据发送和接收的程序,最后还介绍了其它一些辅助API. socket地址API 主 ...
- Linux 高性能服务器编程——Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字(so ...
- 服务器编程入门(4)Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字( ...
- Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址
Android BLE与终端通信(一)--Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址 Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端 ...
- Buffer --缓冲器
一. 启动Buffer缓冲器 node 输入 buffer 创建一个新的buffer var buf = new buffer(''hello word) 查看buf的长度 buf.length 运行 ...
- node.js中Buffer缓冲器的使用
一.什么是Buffer Buffer缓冲器是用来存储输入和输出数据的一段内存.js语言没有二进制数据类型,在处理TCP和文件流的时候,就不是很方便了. 所以node.js提供了Buffer类来处理二进 ...
- SVG 学习<四> 基础API
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
- mongoose 基础api 图表整理
一.背景 今天看 mongoose 的基础 API,参考了下面的链接做了图表以供查阅. 参考资料: http://www.cnblogs.com/xiaohuochai/p/7215067.html ...
- React实例入门教程(1)基础API,JSX语法--hello world
前 言 毫无疑问,react是目前最最热门的框架(没有之一),了解并学习使用React,可以说是现在每个前端工程师都需要的. 在前端领域,一个框架为何会如此之火爆,无外乎两个原因:性能优秀,开发 ...
- 【原创】React实例入门教程(1)基础API,JSX语法--hello world
前 言 毫无疑问,react是目前最最热门的框架(没有之一),了解并学习使用React,可以说是现在每个前端工程师都需要的. 在前端领域,一个框架为何会如此之火爆,无外乎两个原因:性能优秀,开发效率 ...
随机推荐
- 简单地迁移你的android jni代码逻辑到iOS - 编写iOS下jni.h的替代 - ocni.h
1. jni的代码逻辑中与上层平台语言交互了. 2. 使用非Xcode的ide开发工具,希望使用纯净的c/c++代码,不掺杂其它平台相关的语言语法. 3. 只想简单地替换jni代码对上层平台语言的功能 ...
- 看淡生死,不服就干(C语言指针)
看淡生死,不服就干 emmmmm 其实今天蛮烦的 高等数学考的一塌糊涂 会的不会的都没写 真心没有高中轻松了啊 也不知道自己立的flag还能不能实现 既然选择了就一定坚持下去啊 下面还是放一段之前写的 ...
- opencv随笔1
图像处理技术一般包括图像压缩,增强和复原,匹配 描述和l识别 3 个部分. 图像处理一般指数字图像处理 ( Digitallmage Processing). 其中,数字图像是指用工业相机.摄像机.扫 ...
- I/O多路复用模型
背景 在文章<unix网络编程>(12)五种I/O模型中提到了五种I/O模型,其中前四种:阻塞模型.非阻塞模型.信号驱动模型.I/O复用模型都是同步模型:还有一种是异步模型. 想写一个系列 ...
- 图文详解基于角色的权限控制模型RBAC
我们开发一个系统,必然面临权限控制的问题,即不同的用户具有不同的访问.操作.数据权限.形成理论的权限控制模型有:自主访问控制(DAC: Discretionary Access Control).强制 ...
- Openlayers ol.interaction.Select传值问题
说明: 在使用ol.interaction.Select时,我定义的变量作用域作用不到其回调函数里,但我在select结果中,需要用到这些变量 解决方案: 虽想了个办法解决了,但不知道是不是合理:是否 ...
- 一篇很好的学习查看Java源代码的文章
目录: 一. ArrayList概述 二. ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除 6) 调整数组容量 ...
- 🔥《手把手教你》系列练习篇之1-python+ selenium自动化测试(详细教程)
1.简介 相信各位小伙伴或者同学们通过前面已经介绍了的Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是 一只脚已经迈入这个门 ...
- Windows Server 2008 服务器重启后卡死在Windows Update 页面问题处理
Windows Update 服务器 服务器是联想RD640 操作系统Windows Server 2008 R2 Enterprise版 补丁版本是SP1 远程windows服务器时,一直处于远程建 ...
- e = e || window.event的区别及用法
本文链接:https://blog.csdn.net/qq_41348029/article/details/81288481 e = e || window.event 在做事件处理时,用于区分IE ...