node MySQL buffer_nodejs 的基础模块 Buffer

Buffer 用于处理二进制数据流

实例类似证书数组,大小固定

C++ 代码在 V8 堆外分配物理内存

例子

// 创建一个长度为 10、且用 0 填充的 Buffer。

const buf1 = Buffer.alloc(10);

// 创建一个长度为 10、且用 0x1 填充的 Buffer。

const buf2 = Buffer.alloc(10, 1);

// 创建一个长度为 10、且未初始化的 Buffer。

// 这个方法比调用 Buffer.alloc() 更快,

// 但返回的 Buffer 实例可能包含旧数据,

// 因此需要使用 fill() 或 write() 重写。

const buf3 = Buffer.allocUnsafe(10);

// 创建一个包含 [0x1, 0x2, 0x3] 的 Buffer。

const buf4 = Buffer.from([1, 2, 3]);

// 创建一个包含 UTF-8 字节 [0x74, 0xc3, 0xa9, 0x73, 0x74] 的 Buffer。

const buf5 = Buffer.from('tést');

// 创建一个包含 Latin-1 字节 [0x74, 0xe9, 0x73, 0x74] 的 Buffer。

const buf6 = Buffer.from('tést', 'latin1');

Buffer 类的方法

Buffer.alloc

ac425aedfcdd

image

Buffer.from

ac425aedfcdd

image

ac425aedfcdd

image

Buffer.concat

ac425aedfcdd

image

buf 实例的方法

buf.length

返回 buf 实例的字节长度

英文字符,一个字母占一个字节

ac425aedfcdd

image

中文字符,一个中文字符占3个字节

ac425aedfcdd

image

buf.fill

填充 buf 实例。

ac425aedfcdd

image

buf.indexOf

搜索位置,返回找到第一个索引值,类似于数组的 indexOf

ac425aedfcdd

image

Buffer 处理中文乱码问题

例子

ac425aedfcdd

image

const {StringDecoder} = require('string_decoder');

console.log(StringDecoder);

let decoder = new StringDecoder('utf8');

let buf = Buffer.from('中文字符串');

console.log('\n中文乱码问题: \n');

for (let i = 0; i < buf.length; i += 5) {

let b = Buffer.alloc(5);

buf.copy(b, 0, i);

console.log(b.toString());

} //打印出来乱码

console.log('\n 用 StringDecoder 解决: \n');

for (let i = 0; i < buf.length; i += 5) {

let b = Buffer.alloc(5);

buf.copy(b, 0, i);

console.log(decoder.write(b));

} //打印出正常的中文字符

ac425aedfcdd

image

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值