目录

一、什么是Buffer?

二、buffer的创建

1、alloc

2、allocUnsafe

3、from

三、Buffer的操作

1、Buffer与字符串的转换

2、Buffer的读写

四、Buffer的溢出


一、什么是Buffer?

Buffer代表一个缓冲区,存储二进制数据,是字节流。我们在网络传输时,就传输的这种字节流。写文件时,也是写的字节流。
Buffer是十六进制。
JS语言没有二进制数据类型,而在处理TCP和文件流的时候,必须要处理二进制数据。所以,其实node是把数据从二进制转换成了十六进制。
NodeJS提供了一个Buffer对象来提供对二进制数据的操作。
Buffer是一个表示固定内存分配的全局对象,也就是说要放到缓存区中的字节要提前确定。


二、buffer的创建

1、alloc

用alloc方法创建的buffer,每一个二进制位都会归零。

//1、alloc
let buf = Buffer.alloc(10);
console.log(buf);

2、allocUnsafe

此方法可能会创建到旧数据,不会自动把二进制位清零。

这种方式没有清零操作,比alloc快

//2、allocUnsafe
let buf2 = Buffer.allocUnsafe(10);
console.log(buf2);

3、from

每个字母的unicode编码对应的10进制数,转换为16进制数存入buffer中

//3、from
let buf3 = Buffer.from('hello');
console.log(buf3);


三、Buffer的操作

1、Buffer与字符串的转换

let buf4 = Buffer.from([105,108,111,118,101,121,111,117]);
console.log(buf4);
console.log(buf4.toString());//utf-8

2、Buffer的读写

查看buffer里的元素,修改元素等操作和数组一样。

let buf = Buffer.from('hello');
console.log(buf[0]);
console.log(buf[0].toString(2));//将第一个元素转为二进制


四、Buffer的溢出

8个二进制位能存的最大十进制数为255。

当溢出时,会自动舍弃高位上的数字,只保留8位二进制数。

//溢出
let buf = Buffer.from('hello');
buf[0] = 361; //舍弃高位数字,361对应的二进制数为0001 0110 1001 ,舍弃之后变为0110 1001 ,对应的16进制数为69,所以运行结果为69

Buffer缓冲区的相关操作相关推荐

  1. JAVA NIO:NIO与OIO的对比以及Channel通道、Selector选择器、Buffer缓冲区的介绍 高并发

    文章目录 二 Java NIO (一)NIO对比OIO (二)概述三个核心组件 Channel通道 Selector选择器 Buffer缓冲区 (三)Buffer详解 1 Buffer类 2 四个属性 ...

  2. JAVA NIO:NIO与OIO的对比以及Channel通道、Selector选择器、Buffer缓冲区的介绍 //高并发

    文章目录 二 Java NIO (一)NIO对比OIO (二)概述三个核心组件 Channel通道 Selector选择器 Buffer缓冲区 (三)Buffer详解 1 Buffer类 2 四个属性 ...

  3. C++文件流fstream相关操作

    C++文件流fstream相关操作 一.理解Open函数 利用fstream,使用open/close打开或创建,完成后关闭,对文件读入读出使用插入器(<<) 或析取器(>>) ...

  4. 50.逻辑卷管理5,文件系统相关操作,创建挂载文件系统,扩容文件

    文件系统相关操作 创建文件系统 格式化 逻辑卷textlv创建好之后,就可以在上面创建文件系统,以ext4文件系统为例,应该注意的是逻辑卷的引用需要逻辑卷的设备文件,逻辑卷的设备文件有两种书写方式 以 ...

  5. [RabbitMQ]RabbitMQ原理与相关操作(一)

    2019独角兽企业重金招聘Python工程师标准>>> RabbitMQ原理与相关操作(一) 小编是菜鸟一枚,最近想试试MQ相关的技术,所以自己看了下RabbitMQ官网,试着写下自 ...

  6. Java NIO ———— Buffer 缓冲区详解

    引言 缓冲区是一个用于特定基本类型的容器.由java.nio 包定义,所有缓冲区都是 Buffer 抽象类的子类. Java NIO 中的 Buffer ,主要用于与NIO 通道进行交互.数据从通道存 ...

  7. mysql权限相关操作

    默认帐号存储位置 位于mysql数据库中 位于user表 创建mysql帐号 需要登陆mysql 使用超级管理员登陆 只有超级管理员才有权限添加帐号 C:\Users\Administrator> ...

  8. node事件循环 EventEmitter 异步I/O Buffer缓冲区 模块

    node.js事件循环 node.js单进程,单线程的程序 每一个api都支持回调 所有的事件机制都是设计模式中的 一共是23种设计模式 http://design-patterns.readthed ...

  9. 字节流相关操作,基本字节流的Copy文件

    package OneStage.OneStageG.IObetyBuff; /* IO流:实质就是用来处理设备间传输数据的问题:文件的复制,文件上传,下载(硬盘与内存之间数据传输问题)输入:读数据, ...

最新文章

  1. MySQL启动报:[ERROR] The server quit without updating
  2. 双端队列的实现与应用
  3. UA SIE545 优化理论基础 函数凸性的一些有趣的判断方法
  4. 数论四之综合训练——Magic Pairs,Crime Management,Top Secret,组合数问题
  5. 【转】Postman系列二:Postman中get接口实战讲解(接口测试介绍,接口测试流程,头域操作)
  6. 网络常见的 9 大命令
  7. Find the longest route with the smallest starting point
  8. 卡巴斯基许可Key需求登记表
  9. bzoj 2957 楼房重建 分块
  10. android 清除activity栈
  11. thinkjs查询mysql_Thinkjs关系数据库学习——查询数据
  12. 控制策略 | PI控制器积分分离的仿真分析
  13. Autojs.pro 7.0 - 免root 连点器
  14. 计算机c盘无法扩展,win10c盘无法扩展卷怎么办
  15. 如何将华为云服务器重做系统并保留其中的指定数据
  16. Google的地球日图标08版
  17. Java基础321 - 如何重写equals方法
  18. negroni-gzip源代码分析
  19. httpclient的两个重要的参数maxPerRoute及MaxTotal
  20. comparable的compareTo( )方法

热门文章

  1. 重新解读协方差以及EVD/SVD
  2. AWS x Unitimes深圳大数据线下交流会圆满结束
  3. 国二报C语言,国二C语言.doc
  4. 水果店提升顾客消费和营业额的方法,水果店营业额下降原因
  5. 同济大学计算机夏令营2021,同济大学2021年优秀学生暑期学校活动通知
  6. 什么叫异步通信?同步通信与异步通信的区别是什么?
  7. IntelliJ IDEA:activation code 激活码(Windows)
  8. Leetcode279完全平方数(工商银行面试题):广度优先搜索.md
  9. Python-出现“Non-ASCII character ‘\xe6‘ in file“错误解决方法
  10. 接口 401 提示 unauthorized