切换导航
简历
工具
演示
查询
导航菜单
服务端
30
前端
114
数据库
82
进阶开发
8
桌面程序
2
QA
15
软件使用
36
规范协议
5
操作系统
11
AI
0
复用资源
6
硬件
0
标签
HTML
正则表达式
Json
包管理工具
vite
CSS
XPath
JavaScript
Jquery
less
ES6
Vue
React
vue 3
Layui
editor.md
sea.js
Zepto.js
mysql.js
mssql.js
NodeJs
Express
前端template
YAML
杂项
外部链接
.NET Core SDK和运行时安装包
淘宝 NPM 镜像
查询网
Tables Generator线上表格转换工具
引用cdn在线脚本和样式
首页
前端
nodeJs 基础之Buffer使用
[TOC] ### Buffer的基本操作 + Buffer 本质上就是字节数组 + Buffer 支持的编码 `ascii`、默认编码是 `utf8`、`utf16le`、`ucs2`、`base64`、`latin1`、`binary`、`hex` + 构造方法(类)`class:buffer` 对象实例化方式 ```js let buf = new Buffer(5) conlose.log(buf) //输出:<Buffer 00 00 00 00 00> --16进制的表现方式 ``` + 静态实例化方法 常用的三种实例化方法 + `Buffer.alloc(size)` ```js // 整数实例化 let buf = Buffer.alloc(5) conlose.log(buf) //输出:<Buffer 00 00 00 00 00> ``` + `Buffer.from(string)` 第二参数是编码方式 ```js // 字符串实例化 let buf = Buffer.from("hello") conlose.log(buf) //输出:<Buffer 68 65 6c 6c 6f> ``` + `Buffer.from(array)` 同上`from(string)` ```js // 数组实例化 let buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]) console.log(buf) //输出:<Buffer 61 75 66 66 65 72> console.log(buf.toString()) //输出:buffer ``` + 静态方法 常用几个静态方法 + `isEncoding('')` 判断Buffer是不是支持特定的编码 ```js console.log(Buffer.isEncoding('utf8')) //输出:true 支持 console.log(Buffer.isEncoding('gbk')) //输出:false 不支持 ``` + `isBuffer(obj)` 判断对象是不是Buffer ```js let buf = Buffer.from("hello") console.log(Buffer.isBuffer(buf)) //输出:true buf是Buffer console.log(Buffer.isBuffer({})) //输出:false {} 不是Buffer ``` + `byteLength(boj)` 获取buffer对象的长度,这里汉字根据不同编码方式输出的长度也不一样,默认的utf8编码,1个汉字是3个字节 ```js let buf = Buffer.from("汉族") console.log(Buffer.byteLength(buf)) //输出:6 ``` + `concat(list[,totalLength])` 将多个字符串拼接成一个新的字符串,<mark>totalLength</mark>参数是拼接后新字符串的长度,如果拼接后长度超过最大长度则会被截取 ```js let buf1 = Buffer.from("你好!") let buf2 = Buffer.from("中国") let buf3 = Buffer.concat([buf1,buf2]) console.log(buf3.toString()) //输出:你好!中国 let buf3 = Buffer.concat([buf1,buf2],9) console.log(buf3.toString()) //输出:你好! ``` + 实例方法 + `write(string[,offset[,length]][,encoding])` 向Buffer对象中写入内容,<mark>string</mark>要写入buffer的内容,<mark>offset</mark>从buffer第几位开始写入,开始位也是从0开始,<mark>length</mark>写入内容的长度,<mark>encoding</mark>写入buffer的编码方式 ```js let buf = Buffer.alloc(10) buf.write("你好!中国",2,6,'utf8') console.log(buf) //输出:<Buffer 00 00 e4 bd a0 e5 a5 bd 00 00> ``` + `slice([start[,end]])` 截取新的buffer对象,<mark>start</mark>截取的开始位置,<mark>end</mark>截取的结束位置,不是截取的长度,所以end要比start大,end也是从第一位开始计算的 ```js let buf = Buffer.from('你好!中国') let bufNew = buf.slice(3,15) console.log(bufNew) //输出:<Buffer e5 a5 bd ef bc 81 e4 b8 ad e5 9b bd> console.log(bufNew.toString('utf8')) //输出:好!中国 ``` + `toString()` 将buffer对象转成字符串 ```js let buf = Buffer.from('你好!中国','utf8') console.log(buf.toString('utf8')) //输出:你好!中国 ``` + `toJSON()` 将buffer对象转成json形式的字符串,其实是调用的 <mark>JSON.stringify()</mark>方法,<mark>toJSON()</mark>方法不需要显式调用,当 <mark>JSON.stringify()</mark>方法调用时会自动调用 ```js let buf = Buffer.from('hello') let json = JSON.stringify(buf) console.log(json) //输出:{"type":"Buffer","data":[104,101,108,108,111]} let copy = JSON.parse(json, (key, value) => { return value && value.type === "Buffer" ? Buffer.from(value.data) : value; }) console.log(copy.toString()) //输出:hello ```
扫一扫手机看
点击排行
windows 文件资源管理器使用
Layui 弹窗open使用说明
SQL Server 中字符串函数使用
C# 使用QQ邮箱代理做邮件接收功能
SQL Server关于apply的两种形式cross apply 和 outer apply
ASP.NET MVC 模型的自定义验证
nvm安装及常用命令
SQL Server 中数据类型转换
SQL Server 中WITH AS短语的使用
IE浏览器下AJAX缓存问题导致数据不更新的解决办法
订阅号