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�

还是存在乱码,不知道什么原因?

最新文章

  1. BFC深入理解
  2. 钉钉如何进行PC端开发
  3. OpenCV成长之路(3):模仿PhotoShop中魔术棒工具
  4. PHP如何判断远程图片文件是否存在
  5. PHP易混淆函数的区分
  6. wsgi协议
  7. 手势解锁自定义View
  8. 初识HTML 5:关于它的三个三
  9. 第3章 Struts2框架--2、完整的Struts2框架应用实例
  10. 【产品体验】支付宝Alipay9.0
  11. 配置teredo,启用ipv6,xx-net
  12. linux几种时间函数总结
  13. 游戏AI之感知(1)
  14. .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
  15. 关闭 Mac 拼写自动纠正与横线转换
  16. lua table排序报错与解决
  17. Java序列化Serializable
  18. Linux预处理、编译、汇编、链接和运行的过程(包括一些基本的命令)
  19. fjwc2019 D4T1 循环流
  20. countdownlatch 和 CyclicBarrier 和 Semaphore

热门文章

  1. 使用echo命令向文件写入内容
  2. c# 可选参数与命名实参
  3. docker系列(二):镜像
  4. 开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用
  5. paas相关,添加ing
  6. Sql server 查询指定时间区间工作日数、休息日数等日期操作
  7. A(光圈)S(快门) P(程序) M(手动)曝光模式
  8. 装饰者模式及php实现
  9. ae(ArcEngine) java swing开发入门系列(1):开发环境和代码部署
  10. html 获取和写入cookie的 方法