Buffer的基础使用

本文详细介绍了Buffer在JavaScript中的基础使用,包括Buffer的概念、创建方法(alloc,allocUnsafe,from),以及常用操作如toString、修改值和可能遇到的溢出问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是Buffer

  1. Buffer是一个类似于数组的对象,用于表示固定长度的字节序列。
  2. Buffer本质是一段内存空间,专门用来处理二进制数据。
  3. Buffer大小固定且无法调整。
  4. Buffer性能较好,可以直接对计算机内存进行操作。
  5. Buffer每个二进制位元素的大小为1字节(byte),二进制位的元素大小为1bit。

二、如何创建一个Buffer

  1. Buffer.alloc(val)
    可以接受一个number类型的值,代表创建几个字节的Buffer,并且会清空旧的内存数据并且对每个二进制位都清零。
let buf = Buffer.alloc(10)
console.log(buf)
<Buffer 00 00 00 00 00 00 00 00 00 00>
  1. Buffer.allocUnsafe(val)
    与Buffer.alloc()作用相同,但是用Buffer.allocUnsafe(),方法创建的Buffer并不会对旧的数据清空,不会对二进制位清空,所以用这种方法创建的Buffer会有旧的数据。
let buf = Buffer.allocUnsafe(10000)
console.log(buf)
<Buffer 40 f3 57 2d 22 02 00 00 20 b3 57 2d 22 02 00 00 00 20 ...>
  1. Buffer.from(val)
    可以接受String,Array等类型的数据转换成Buffer。
    在接受字符串时,会把对应下标的字符串转换成UniCode码表所对应的数字,这个数字会转换成二进制存在Buffer中。
let buf = Buffer.from('hello')
console.log(buf)
<Buffer 68 65 6c 6c 6f>

tips:打印的结果为了方便阅读,会把每一个二进制位转换成16进制来进行展示。

三、其它

  1. Buffer的其它方法
    Buffer.toString(),可以将Buffer转换成所对应的字符串。
let buf = Buffer.from('hello')
console.log(buf.toString())
hello
  1. 修改Buffer
    由于Buffer是一个类数组结构,所以可以通过下标来修改Buffer的值。
let buf = Buffer.from('hello')
buf[0] = 100
console.log(buf.toString())
dello
  1. 溢出
    由于八位二进制所能代表的最大数为255,所以当修改的值超过255时,会出现溢出问题,这时内部将会舍弃高位的数字。(将高于8位的数字全部丢掉)。
let buf = Buffer.from('hello')
buf[0] = 300
console.log(buf)
<Buffer 2c 65 6c 6c 6f>

300所对应的二进制为0001 0010 1100,对应的16进制为12c,所以2c应为12c,
但是由于300超出8位二进制的最大数255,所以舍弃300二进制的高位数,实际取得为0010 1100,所对应的16进制为2c。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值