nodejs /Buffer

NET模块:

Buffer、Stream
网络基础就是数据的传输和处理。
Buffer(缓冲):存放二进制数据缓存区,有一些方法来处理二进制数据,Buffer在nodejs里面可以全权访问,不需要require
Buffer:
这里写图片描述
可以看出Buffer是一个对象,里面拥有自己的一些方法
这里写图片描述
在Buffer与字符串进行转换时,默认按照utf-8标准转换,第二个参数代表转换的格式可以试试’base64’格式转换
可以看出来,我们可以通过new方法实例化Buffer对象

还可以这样生成一段内存区间

var buf = new Buffer(8)

buf.length
//8
var buf = new Buffer ('22332343423')
console.log(buf)
var buf = new Buffer(7);
buf.write('12345678');
console.log(buf)
//<Buffer 31 32 33 34 35 36 37>
var buf = new Buffer([1,2,3,4]);
console.log(buf)
//<Buffer 01 02 03 04>
console.log(buf[1])
//2

Buffer到底怎么用:
1、Buffer实例话
2、实例话后对象的使用
Buffer实例方法:

buffer[index]
buffer.length
buffer.werite(string, offset=0, length, encoding='utf-8')
buffer.toString(encoding, start=0, end=buffer.length)
buffer.copy(target, tStart, sStart, sEnd=buffer.length)
buffer.slice(start, end)
buffer.compare(otherBuffer)
buffer.equals(otherBuffer)
buffer.fill(value, offset, end)

可以认为将es6中对数组的操作的能力挪到buffer里对二进制进行操作
这里写图片描述

Buffer支持的编码格式:
hex:将一个字节编码成两个十六进制的字符
utf8 : 英文字母用一个字节,中文一般两个,默认类型
utf-8:
ascii:标识英语和西欧语言,优点是快
binary: 2进制,以后会移除
base64: 8字节
ucs2: utf16le别名
ucs-2、utf16le、utf-16le、raw:
那么我们怎么把字符串转码成我们需要的格式那
这里写图片描述

utf-8就被我们转到base64了

这里写图片描述
base64转到hex了

那么这个buffer有什么用那?

复制图片
当我们拿到一个图片,我们想要通过代码拿到图片的base64编码复制这个图片,我们就可以用buffer来写

//拿到fs模块
var fs = require('fs')
//通过readFile方法读取图片 同时创建到目标buffer文件中
fs.readFile('timg.jpeg', function(err, origin_buffer) {
    //判断是否是一个buffer
    console.log(Buffer.isBuffer(origin_buffer))
    //写一个新文件(timg_buffer.jpeg),将原始的buffer传给他
    fs.writeFile('timg_buffer.jpeg', origin_buffer, function(err) {
        if (err) console.log(err)
    })

    //拿到图片的base64编码值
    var base64Image = origin_buffer.toString('base64')

    console.log(base64Image)

    //创建一个新的buffer
    var decodeImage = new Buffer(base64Image, 'base64')

    //判断两个buffer是不是一样的
    console.log(Buffer.compare(origin_buffer, decodeImage))

    //写入新的buffer
    fs.writeFile('timg_decoded.jpeg', decodeImage, function(err) {
        if (err) console.log(err)
    })
})

在目标文件的终端执行node 文件名就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值