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 文件名
就可以了