node.js Buffer常用方法

//Buffer缓冲区
var buf = new Buffer(100); //创建长度为100字节的Buffer实例;

//写入缓冲区,write方法的返回值是实际写入的大小,如果空间不足只会写入部分字符串
var len = buf.write('www.runoob.com');//用write方法写入,有四个参数,第一个是写入的字符串,第二个是缓冲区开始写入的索引值,默认为0.第三个是写入字节数,默认为buf.length,第四个是使用的编码,默认为utf8

console.log('write input byte number:'+len);//返回14

//从缓冲区中读取数据
var str = buf.toString('utf8',5,10);//使用toString()方法读取缓冲区的数据,三个参数,第一个是使用的编码,第二个是开始读取的索引,默认是0,点歌是结束位置,默认是缓冲区结尾

console.log('Output string is: '+str);

//Buffer 转换Json 对象
//var strJson = buf.toJSON();
//console.log('convert to JSON :'+ JSON.stringify(strJson));

//缓冲区合并
var buf_2 = new Buffer('learning web:');//创建一个长度为50的缓冲区
var buf_3 = Buffer.concat([buf_2,buf]);//合并两个缓冲区,concat方法的参数是一个数组,数组包含要合并的缓冲区
console.log(buf_3.toString());

//拷贝缓冲区
var buf_copy = new Buffer(14);//创建缓冲区
    buf.copy(buf_copy);//把buf缓冲区拷贝到buf_copy,因为buf_copy长度只有14,所以只有拷贝到buf缓冲区0到14的数据;
console.log(buf_copy.toString());

//缓冲区裁剪
var buf_slice = buf.slice(0,5);//两个参数分别是裁剪的起始索引和终点索引,ps:返回的是一个新的缓冲区,它和旧缓冲区指向同一块内存,只是索引在star到end的位置裁剪了,如果就缓冲区发生变化,裁剪得到的新缓冲区可能发生变化
console.log('buf slice: ' + buf_slice.toString());//打印新缓冲区
buf.write('mao gui you liu dong mei',0);//改变旧缓冲区
console.log(buf.toString());//打印旧缓冲区
console.log('buf slice and buf change: ' + buf_slice.toString());//打印出的是 mao g,因为就缓冲区和新缓冲区指向同一块内存,旧缓冲区发生改变,新缓冲区也会相应改变

//计算缓冲区的长度
var buf_length = buf.length;
console.log('buf length:' + buf_length);//100

//更多Buffer模块的方法可参考如下网址:http://www.runoob.com/nodejs/nodejs-buffer.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 TypedArray 实现类似于 Node.jsBuffer 的 TypeScript 类型的示例代码: ```typescript type TypedArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array; class Buffer { private bytes: Uint8Array; constructor(sizeOrArray: number | Uint8Array) { if (typeof sizeOrArray === 'number') { this.bytes = new Uint8Array(sizeOrArray); } else { this.bytes = sizeOrArray; } } static from(value: string, encoding: string = 'utf-8'): Buffer { const encoder = new TextEncoder(); const bytes = encoder.encode(value); return new Buffer(bytes); } toString(encoding: string = 'utf-8'): string { const decoder = new TextDecoder(encoding); return decoder.decode(this.bytes); } static isBuffer(obj: any): obj is Buffer { return obj instanceof Buffer; } slice(start?: number, end?: number): Buffer { return new Buffer(this.bytes.subarray(start, end)); } // 将 TypedArray 转换为 Buffer static fromTypedArray(typedArray: TypedArray): Buffer { return new Buffer(new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength)); } // 将 Buffer 转换为 TypedArray toTypedArray(): TypedArray { return new Uint8Array(this.bytes.buffer, this.bytes.byteOffset, this.bytes.byteLength) as TypedArray; } } ``` 这个 Buffer 类型实现了一些常用方法,例如 from、toString、slice 等。同时,还提供了 fromTypedArray 和 toTypedArray 两个方法,用于将 TypedArray 转换为 Buffer,或将 Buffer 转换为 TypedArray。 需要注意的是,由于不同浏览器对 TypedArray 的支持程度不同,一些 API 的实现和行为可能会有所不同,需要根据具体情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值