nodejs中Buffer的創建和轉換


  buffer是用來做什么?主要是用來處理二進制文件流和TCP流的文件緩存區。我們可以將二進制流和string,json,int進行轉換,也可以進行復制,或者通過自帶的函數進行判斷buffer的一些狀態。

  創建Buffer對象(實例)

    1.使用var buffer = new Buffer(size)創建對象,然后用buffer.fill(value,[offset],[end])來初始化對象。

    2.使用var buffer = new Buffer(array)創建對象。

    3.使用var buffer= new Buffer(string,[encoding])創建對象。

  **字符串的長度和緩沖區的長度是不一樣的,因為字符串是文字為單位,而緩沖區是以字節數為單位。

  

  Buffer<---->string 相互轉換(實例

    buf.toString([encoding],[start],[end]);//buffer轉換為字符串

    buf.write(string,[offset],[length],[encoding]);//buffer將string轉換為buf並且寫入現有的buffer中(這里wirte實際功能是替換!!)

    Stringdecoder類:

     解釋為何使用這個類?因為我們通長會切割或者分開生產buffer,那么一段話就會被切開,這樣的話使用buffer->string則會生成亂碼,所以使用decoder.write(buf);則會避免這個問題。

 

  Buffer<---->int 相互轉換(實例

    buf.readUInt8(offset,[noAssert])//這個函數用來讀取第offset位置上的buffer數據,如果noAssert設置為true,則會判斷是否offset沒有越界,並且拋出異常。

    buf.wirteUInt8(value,offset,[noAssert])//這個函數用來替換第offset位置上的值。

  

  Buffer<----->JSON相互轉換(實例

    var json = JSON.strify(buf)//將buf轉換為json格式數據

    var array = JSON.parse(json)//將json轉化為array數組

 

  buf1復制到buf2

    buf.copy(targetBuffer,[targetstart],[sourcestart],[sourceend]);//將buffer1復制到bufer2之中。

  

 

Buffer類的類方法:(實例

   1.isBuffer方法:

      Buffer.isBuffer(obj)   是否是一個buffer對象。

   2.byteLength方法:

      Buffer.byteLength(string,[encoding])   判斷string轉為buffer的長度

    3.concat方法    

       Buffer.concat(list,[totalLength])   list是一個數組,將幾個buffer合為一個的orgin方法。

    4.isEncoding方法

       Buffer.isEncoding(encoding)判斷當前是否是一個有效的編碼格式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM