Buffer類的使用

2021-08-17 12:13:43 字數 2804 閱讀 5145

指定長度的buffer例項

let a: buffer = new buffer(number: length);

# 為buffer例項賦值

a.fill(value);

通過陣列實現buffer的例項(使用陣列初始化緩衝區)

let a: buffer = new

buffer(array);

通過字串和編碼實現buffer的例項(使用字串初始化緩衝區)

# 預設編碼是utf-8

let a: buffer = new buffer(str, encoding);

編碼檢查

buffer.isencoding('utf-8');

buffer.ifencoding('gbk');

執行結果

> buffer.isencoding('utf-8')

true

> buffer.isencoding('gbk')

false

buffer類檢查

buffer.isbuffer(new

buffer([1,2,3,4,5,6]));

buffer.isbuffer([1,2,3,4,5,6]);

執行結果

> buffer.isbuffer(new

buffer([1,2,3,4,5,6]));

true

> buffer.isbuffer([1,2,3,4,5,6]);

false

字串的位元組長度

buffer.bytelength("我喜歡程式設計");
執行結果

> buffer.bytelength("我喜歡程式設計");

15

buffer的連線

let a: buffer = new

buffer("我");

let b: buffer = new

buffer("喜");

let c: buffer = new

buffer("歡");

let d: buffer = new

buffer("程式設計");

let str: buffer = buffer.concat([a, b, c, d]);

console.log(str.tostring());

執行結果

我喜歡程式設計

buffer的比較:用於buffer的內容排序,按字串的順序進行排序

let a: buffer = new

buffer("10");

let b: buffer = new

buffer('50');

let c: buffer = new

buffer('123');

console.log(buffer.compare(a, b));

console.log(buffer.compare(b, c));

console.log([a, b, c].sort(buffer.compare).tostring());

執行結果

-1

110,123,50

let a: buffer = new buffer(128);

a.write("第一次寫入資料");

console.log(a.tostring());

let len1: number = a.write("覆蓋第一次寫入的資料");

console.log(a.tostring());

a.write("接著第二次的資料寫入新資料",len1);

console.log(a.tostring());

執行結果

第一次寫入資料

覆蓋第一次寫入的資料

覆蓋第一次寫入的資料接著第二次的資料寫入新資料

注意:

若想要繼續寫入buffer,應該獲取當前位元組數作為偏移量,而不能直接使用a.length獲取,這中方式獲取到的整個buffer的長度,而無法繼續寫入新的位元組資料.

**node.js的節點的緩衝區,根據讀寫整數的範圍,提供了不同寬度的支援,使從1到8個位元組(8位、16位、32位)的整數、浮點數(float)、雙精度浮點數(double)可以被訪問,分別對應不同的write***()函式,使用方法與buf.write()類似。**
let a: buffer = new

buffer("我喜歡程式設計");

let b: buffer= new

buffer(128);

a.copy(b);

console.log(b.length + " " + b.tostring());

執行結果

128  我喜歡程式設計

C 實現的Buffer類

寫c 的同志一定覺得byte 比c 的 byte 加 length的方式好的多。一來,只需要乙個物件就可以是表示一段位元組流,另一方面,由於c 的特性,不需要象c 那樣還要記得刪除指標。由於我工作中,需要頻繁地試用c 和c 所以寫了個c 的類,以便方便地管理位元組流。很簡單,先定義乙個類 cmemo...

C 實現的Buffer類

寫c 的同志一定覺得byte 比c 的 byte 加 length的方式好的多。一來,只需要乙個物件就可以是表示一段位元組流,另一方面,由於c 的特性,不需要象c 那樣還要記得刪除指標。由於我工作中,需要頻繁地試用c 和c 所以寫了個c 的類,以便方便地管理位元組流。很簡單,先定義乙個類 cmemo...

C 實現的Buffer類

寫c 的同志一定覺得byte 比c 的 byte 加 length的方式好的多。一來,只需要乙個物件就可以是表示一段位元組流,另一方面,由於c 的特性,不需要象c 那樣還要記得刪除指標。由於我工作中,需要頻繁地試用c 和c 所以寫了個c 的類,以便方便地管理位元組流。很簡單,先定義乙個類 cmemo...