NodeJS基础入门-Buffer
2024-09-07 09:18:13
Buffer.byteLength
console.log(Buffer.byteLength('test'));
console.log(Buffer.byteLength('我是C语言爱好者'));
4
22
每个中文是3个字节
Buffer.isBuffer
console.log(Buffer.isBuffer({}));
console.log(Buffer.isBuffer(Buffer.from([1,2,3])));
false #第一个不是Buffer
true #第二个是Buffer
Buffer.concat()
const buf1 = Buffer.from('This ');
const buf2 = Buffer.from('is ');
const buf3 = Buffer.from('a ');
const buf4 = Buffer.from('book ');
console.log(Buffer.concat([buf1, buf2, buf3, buf4]).toString());
This is a book
实例的常见用法
buf.length
const buf = Buffer.from('你好');
console.log(buf.length);
const buf2 = Buffer.alloc(10);
buf2[0] = 2;
console.log(buf2.length);
6 # 中文字符3个字节
10 # 固定分配10个长度单位
buf.toString()
console.log(buf.toString());
console.log(buf.toString('base64'));
你好 #默认UTF-8
5L2g5aW9 #设置为base64
buf.fill()
const buf3 = Buffer.allocUnsafe(10);
console.log(buf3);
console.log(buf3.fill(10,2,6));
<Buffer 00 00 00 00 00 00 00 00 48 c1>
<Buffer 00 00 0a 0a 0a 0a 00 00 48 c1> #填入10,十六进制0x0a,在buf3[2]到buf[6]的填入
buf.equals()
const buf = Buffer.from('test');
const buf2 = Buffer.from('test');
const buf3 = Buffer.from('test!');
console.log(buf.equals(buf2));
console.log(buf.equals(buf3));
比较两个内容是否一样:
true
false
buf.indexOf()
const buf = Buffer.from('test');
console.log(buf.indexOf('es'));
console.log(buf.indexOf('esa'));
1 #从buf[1]找到
-1 # 没有找到
Buffer乱码问题的解决
const buf = Buffer.from('中文字符串!');
for (let i = 0; i < buf.length; i += 5) {
const b = Buffer.allocUnsafe(5);
buf.copy(b, 0, i);
console.log(b.toString());
}
输出是乱码:
中�
�字�
��串
!s=
输出存在乱码
const StringDecoder = require('string_decoder').StringDecoder;
const decoder = new StringDecoder('utf8');
const buf = Buffer.from('中文字符串!');
for (let i = 0; i < buf.length; i += 5) {
const b = Buffer.allocUnsafe(5);
buf.copy(b, 0, i);
console.log(decoder.write(b));
}
中
文字
符串
!9�
还是存在乱码,不知道什么原因?
最新文章
- BFC深入理解
- 钉钉如何进行PC端开发
- OpenCV成长之路(3):模仿PhotoShop中魔术棒工具
- PHP如何判断远程图片文件是否存在
- PHP易混淆函数的区分
- wsgi协议
- 手势解锁自定义View
- 初识HTML 5:关于它的三个三
- 第3章 Struts2框架--2、完整的Struts2框架应用实例
- 【产品体验】支付宝Alipay9.0
- 配置teredo,启用ipv6,xx-net
- linux几种时间函数总结
- 游戏AI之感知(1)
- .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
- 关闭 Mac 拼写自动纠正与横线转换
- lua table排序报错与解决
- Java序列化Serializable
- Linux预处理、编译、汇编、链接和运行的过程(包括一些基本的命令)
- fjwc2019 D4T1 循环流
- countdownlatch 和 CyclicBarrier 和 Semaphore