Node.js知識點整理之----Buffer類

Buffer類,是用來建立一個專門存放二進制數據的緩存區。數組

Buffer類,是一個能夠在任何模塊中使用的全局類。緩存

Buffer類使用 new 關鍵字建立該類的實例對象。ui

三種形式建立實例對象:編碼

new Buffer(size)
//對象擁有一個length屬性,屬性值爲緩存區大小

new Buffer(array)
//直接使用一個數組來初始化緩存區

new Buffer(str,[eccoding])
//直接使用一個字符串來初始化緩存區
//參數一:必須,用於初始化緩存區的字符串
//參數二:可選,用於指定文字編碼格式的字符串,默認爲utf

字符編碼:spa

  • ascii:ASCII字符串
  • utf8:UTF-8字符串
  • utf16le:UTF-16LE字符串
  • ucs2:UCS3字符串
  • base64:通過base64編碼後的字符串
  • binary:二進制數據(不推薦使用)
  • hex:使用16進制數值表示的字符串

在Node.js中,一個字符串的長度 與 根據該字符串所建立的緩存區的長度並不相同。code

字符串對象一旦建立不可被修改對象

Buffer對象建立後可被修改blog

 

Buffer對象方法ci

fill(value,[offset],[end])字符串

  • 參數一:必須,表示須要被寫入的數值
  • 參數二:可選,指定從第幾個字節處開始寫入數值,默認爲0
  • 參數三:可選,指定將數值一直寫入到第幾個字節處,默認Buffer對象的大小,即書寫到緩存區底部

toString([encoding],[start],[end])

將Buffer對象中保存的數據轉換爲字符串。

  • 參數一:可選,指定Buffer對象中保存的文字編碼格式,默認utf8
  • 參數二:可選,指定被轉換的數據起始位置,以字節爲單位
  • 參數三,可選,指定被轉換的數據終止位置,以字節爲單位

write(string,[offset],[length],[encoding])

向Buffer對象中寫入字符串

  • 參數一:必須,指定須要寫入的字符串
  • 參數二:可選,指定字符串轉換爲字節數據後的開始位置
  • 參數三:可選,指定字符串轉換爲字節數據後的長度
  • 參數四:可選,指定寫入字符串時使用的編碼格式,默認爲utf8

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

將Buffer對象中二進制數據複製到另外一個Buffer對象中。

 

Buffer對象與數值對象之間的相互轉換

參數一:offset 指定獲取數據的起始位置,以字節爲單位

參數二:noAssert 布爾值,指定是否對offset的值進行驗證

  • readUInt8(offset,[noAssert])
  • writeUInt8(value,offset,[noAssert])
  • readUInt16LE(offset,[noAssert])
  • writeUInt16LE(value,offset,[noAssert])
  • readUInt16BE(offset,[noAssert])
  • writeUInt16BE(value,offset,[noAssert])
  • readUInt32LE(offset,[noAssert])
  • writeUInt32LE(value,offset,[noAssert])
  • readUInt32BE(offset,[noAssert])
  • writeUInt32BE(value,offset,[noAssert])
  • readInt8(offset,[noAssert])
  • writeInt8(value,offset,[noAssert])
  • readInt16LE(offset,[noAssert])
  • writeInt16LE(value,offset,[noAssert])
  • readInt16BE(offset,[noAssert])
  • writeInt16BE(value,offset,[noAssert])
  • readInt32LE(offset,[noAssert])
  • writeInt32LE(value,offset,[noAssert])
  • readInt32BE(offset,[noAssert])
  • writeInt32BE(value,offset,[noAssert])
  • readFloatLE(offset,[noAssert])
  • writeFloatLE(value,offset,[noAssert])
  • readFloatBE(offset,[noAssert])
  • writeFloatBE(value,offset,[noAssert])
  • readDoubleLE(offset,[noAssert])
  • writeDoubleLE(value,offset,[noAssert])
  • readDoubleBE(offset,[noAssert])
  • writeDoubleBE(value,offset,[noAssert])

Buffer對象與JSON對象之間的相互轉換

能夠使用 JSON.stringify()將Buffer對象中保存的數據轉換爲一個字符串

能夠使用JSON.parse()將一個通過轉換後的字符串還原爲一個數組

Buffer類方法

Buffer.isBuffer(obj)

判斷一個對象是否爲Buffer對象。

Buffer.byteLength(string,[encoding])

計算一個指定字符串的字節數。

Buffer.concat(list,[totalLength])

用於將幾個Buffer對象結合建立爲一個新的Buffer對象。

  • 參數一:必須,Buffer對象數組
  • 參數二:可選,指定被建立的Buffer對象的總長度

若是參數一爲空數組 或 參數二等於0,返回一個長度爲0的Buffer對象

若是參數一爲只有一個Buffer對象,返回該Buffer對象

若是參數一擁有一個以上的Buffer對象,返回被建立的Buffer對象

Buffer.isEncoding(encoding)

檢測一個字符串是否爲一個有效的編碼格式字符串。

 

StringDecoder對象

將Buffer對象中的數據轉換爲字符串,做用與toString()相同。 對UTF8編碼格式的字符串提供更好的支持。
必須加載Node.js中的string_decoder模塊,才能使用。

//加載模塊
var StringDecoder = require('string_decoder').StringDecoder;

//建立對象
var decoder = new StringDecoder([encoding])decoder.write(buffer)
相關文章
相關標籤/搜索