微信小程序 Node.js (基礎(chǔ)六) Buffer(緩沖區(qū))

微信小程序Node.js? Buffer:

JavaScript語言自身只有字符串?dāng)?shù)據(jù)類型,沒有二進(jìn)制數(shù)據(jù)類型本昏。

但在處理像TCP流或文件流時供汛,必須使用到二進(jìn)制數(shù)據(jù)。因此在Node.js中,定義了一個 Buffer 類怔昨,該類用來創(chuàng)建一個專門存放二進(jìn)制數(shù)據(jù)的緩存區(qū)雀久。

node.js中,Buffer 類是隨 Node 內(nèi)核一起發(fā)布的核心庫朱监。Buffer 庫為 Node.js帶來了一種存儲原始數(shù)據(jù)的方法岸啡,可以讓 Node.js 處理二進(jìn)制數(shù)據(jù)原叮,每當(dāng)需要在 Node.js 中處理I/O操作中移動的數(shù)據(jù)時赫编,就有可能使用 Buffer 庫。原始數(shù)據(jù)存儲在 Buffer 類的實(shí)例中奋隶。一個 Buffer 類似于一個整數(shù)數(shù)組擂送,但它對應(yīng)于 V8 堆內(nèi)存之外的一塊原始內(nèi)存。

創(chuàng)建Buffer

1.長度為10的實(shí)例varbuf =newBuffer(10)2.通過給定的數(shù)組創(chuàng)建varbuf =newBuffer([10,20,30,40,50])3.通過字符串創(chuàng)建varbuf =newBuffer("www.csdn.net","utf-8")utf-8是默認(rèn)的編碼方式支持以下編碼:"ascii","utf8","utf16le","ucs2","base64"和"hex"唯欣。

寫入緩存區(qū).write()

varbuf =newBuffer(200)varlen= buf.write("www.csdn.net")console.log("寫入字節(jié)數(shù):"+len)

string - 寫入緩沖區(qū)的字符串嘹吨。

offset - 緩沖區(qū)開始寫入的索引值,默認(rèn)為 0 境氢。

length - 寫入的字節(jié)數(shù)蟀拷,默認(rèn)為 buffer.length

encoding - 使用的編碼。默認(rèn)為 ‘utf8’ 萍聊。

緩存區(qū)讀取.toString()

buf = new Buffer(26);for (vari =0; i < 26 ; i++) {buf[i] = i +97;}console.log(buf.toString('ascii'));? ? ? // 輸出: abcdefghijklmnopqrstuvwxyzconsole.log(buf.toString('ascii',0,5));? // 輸出: abcdeconsole.log(buf.toString('utf8',0,5));? ? // 輸出: abcdeconsole.log(buf.toString(undefined,0,5)); // 使用 'utf8' 編碼, 并輸出: abcde

encoding - 使用的編碼问芬。默認(rèn)為 ‘utf8’ 。

start - 指定開始讀取的索引位置寿桨,默認(rèn)為 0此衅。

end - 結(jié)束位置,默認(rèn)為緩沖區(qū)的末尾亭螟。

Buffer轉(zhuǎn)JSON

varbuf =newBuffer('www.runoob.com');varjson = buf.toJSON(buf);console.log(json);

合并 Buffer.concat([,])

varbuf =newBuffer("北京")varbuf1 =newBuffer("上海")varbuf2 = Buffer.concat([buf,buf1],12)console.log(buf2.toString())

list用于合并的 Buffer 對象數(shù)組列表挡鞍。

totalLength指定合并后Buffer對象的總長度。

比較 .compare(otherBuffer)

在 Node.js v0.12.2 版本引入

varbuffer1 =newBuffer("AVCX")varbuffer2 =newBuffer("ACVV")varresult = buffer1.compare(buffer2)if(result <0) {console.log(buffer1 +" 在 "+ buffer2 +"之前");}elseif(result ==0){console.log(buffer1 +" 與 "+ buffer2 +"相同");}else{console.log(buffer1 +" 在 "+ buffer2 +"之后");}

拷貝 .compare(buffer2)

buf.copy(targetBuffer[, targetStart[,sourceStart[,sourceEnd]]])

targetBuffer - 要拷貝的 Buffer 對象预烙。

targetStart - 數(shù)字, 可選, 默認(rèn): 0

sourceStart - 數(shù)字, 可選, 默認(rèn): 0

sourceEnd - 數(shù)字, 可選, 默認(rèn): buffer.length

varbuf1 =newBuffer("beiJing")varbuf2 =newBuffer(8)buf1.copy(buf2)console.log("buf2 content:"+buf2.toString())

剪裁 .slice(buffer2)

buf.slice([start[, end]])

start - 數(shù)字, 可選, 默認(rèn): 0

end - 數(shù)字, 可選, 默認(rèn): buffer.length

返回值

返回一個新的緩沖區(qū)墨微,它和舊緩沖區(qū)指向同一塊內(nèi)存,但是從索引 start 到 end 的位置剪切。

varbuf1 =newBuffer("beiJing")varbuf2 = buf1.slice(0,8)console.log("buf2 content:"+buf2)// beiJing

長度 .length

buf.length;

//返回這個 buffer 的 bytes 數(shù)势就。注意這未必是 buffer 里面內(nèi)容的大小莉给。length 是 buffer 對象所分配的內(nèi)存數(shù),它不會隨著這個 buffer 對象內(nèi)容的改變而改變炼蹦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市狸剃,隨后出現(xiàn)的幾起案子掐隐,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虑省,死亡現(xiàn)場離奇詭異匿刮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)探颈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門熟丸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伪节,你說我怎么就攤上這事光羞。” “怎么了怀大?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵纱兑,是天一觀的道長。 經(jīng)常有香客問我化借,道長潜慎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任蓖康,我火速辦了婚禮铐炫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒜焊。我一直安慰自己倒信,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布山涡。 她就那樣靜靜地躺著堤结,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸭丛。 梳的紋絲不亂的頭發(fā)上竞穷,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音鳞溉,去河邊找鬼瘾带。 笑死,一個胖子當(dāng)著我的面吹牛熟菲,可吹牛的內(nèi)容都是我干的看政。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼抄罕,長吁一口氣:“原來是場噩夢啊……” “哼允蚣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呆贿,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嚷兔,失蹤者是張志新(化名)和其女友劉穎森渐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冒晰,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡同衣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了壶运。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耐齐。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蒋情,靈堂內(nèi)的尸體忽然破棺而出埠况,到底是詐尸還是另有隱情,我是刑警寧澤恕出,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布询枚,位于F島的核電站,受9級特大地震影響浙巫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刷后,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一的畴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尝胆,春花似錦丧裁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贪染,卻和暖如春缓呛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杭隙。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工哟绊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痰憎。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓票髓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铣耘。 傳聞我的和親對象是個殘疾皇子洽沟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Node.js Buffer(緩沖區(qū)) JavaScript 語言自身只有字符串?dāng)?shù)據(jù)類型,沒有二進(jìn)制數(shù)據(jù)類型蜗细。但在...
    FTOLsXD閱讀 514評論 0 2
  • Node.js 常用工具 util 是一個Node.js 核心模塊裆操,提供常用函數(shù)的集合,用于彌補(bǔ)核心JavaScr...
    FTOLsXD閱讀 535評論 0 2
  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,338評論 0 6
  • Node.js是目前非常火熱的技術(shù)跷车,但是它的誕生經(jīng)歷卻很奇特棘利。 眾所周知,在Netscape設(shè)計出JavaScri...
    w_zhuan閱讀 3,616評論 2 41
  • 個人入門學(xué)習(xí)用筆記朽缴、不過多作為參考依據(jù)善玫。如有錯誤歡迎斧正 目錄 簡書好像不支持錨點(diǎn)、復(fù)制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,472評論 1 37