Buffer模塊

產(chǎn)生背景:node需要處理網(wǎng)絡(luò)協(xié)議,操作數(shù)據(jù)庫(kù),處理圖片,文件上傳等,需要大量的二進(jìn)制操作。

1.實(shí)例化一個(gè)buffer對(duì)象

var buf = new Buffer([ox68, ox65, ox6c, ox6f]) ? ? ? ? ? ? ??

里邊的二進(jìn)制是數(shù)組形式

var buf = new Buffer(10) ??

生成一個(gè)長(zhǎng)度為10的Buffer對(duì)象

2.Buffer二進(jìn)制與字符串的轉(zhuǎn)換

(1)轉(zhuǎn)化成字符串:buf.toString('utf-8')

(2)轉(zhuǎn)化成buffer二進(jìn)制:new Buffer('hello') ? 或 ? new Buffer('hello', 'utf-8')

3.buffer對(duì)象操作

(1)buf.length ? ?獲取Buffer對(duì)象的長(zhǎng)度

(2)var Bup = bin.slice(2) ?bin是從位置2開(kāi)始開(kāi)始切割直至結(jié)束,Bup是新的buf對(duì)象

(3)合并buffer對(duì)象

1) var buf1 = new Buffer([0x01, 0x02])

? ? var newBuf = buf1.concat(buf)

2) 拼接Buffer

? ? res.on('data', function(chunk){

? ? })

其中參數(shù)chunk是Buffer對(duì)象,直接用+拼接會(huì)產(chǎn)生亂碼,對(duì)于寬字節(jié)字符可能導(dǎo)致亂碼產(chǎn)生。

解決方法:第一種,在可讀流中setEncoding方法,該方法讓data事件傳遞不再是Buffer對(duì)象,而是編碼后的字符串;

第二種,將Buffer對(duì)象暫列數(shù)組中,組裝完成一個(gè)大Buffer之后拼接。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測(cè)試 ...
    KeKeMars閱讀 6,603評(píng)論 0 6
  • Node.js Buffer(緩沖區(qū)) JavaScript 語(yǔ)言自身只有字符串?dāng)?shù)據(jù)類(lèi)型,沒(méi)有二進(jìn)制數(shù)據(jù)類(lèi)型。但在...
    FTOLsXD閱讀 612評(píng)論 0 2
  • JavaScript對(duì)字符串處理十分友好,無(wú)論是寬字節(jié)還是單字節(jié)字符串,都被認(rèn)為是一個(gè)字符串。Node中需要處理網(wǎng)...
    小母雞嘰嘰嘰閱讀 440評(píng)論 0 0
  • Buffer是node的核心模塊,開(kāi)發(fā)者可以利用它來(lái)處理二進(jìn)制數(shù)據(jù),比如文件流的讀寫(xiě)、網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)的處理等。 Bu...
    自度君閱讀 569評(píng)論 0 1
  • 在NODE中,應(yīng)用需要處理網(wǎng)絡(luò)協(xié)議、操作系統(tǒng)數(shù)據(jù)庫(kù)、處理圖片、接受上傳文件等,在網(wǎng)絡(luò)流和文件的操作中,需要處理大量...
    TaoGeNet閱讀 2,285評(píng)論 0 2

友情鏈接更多精彩內(nèi)容