首頁  >  文章  >  微信小程式  >  微信小程式 Buffer緩衝區的解析

微信小程式 Buffer緩衝區的解析

不言
不言原創
2018-06-27 15:12:392690瀏覽

這篇文章主要介紹了微信小程式Buffer緩衝區的詳解的相關資料,需要的朋友可以參考下

 微信小程式Buffer緩衝區的詳解

#JavaScript 語言本身只有字串資料型,沒有二進位資料型別。

但在處理像TCP流或檔案流時,必須使用到二進位資料。因此在 Node.js中,定義了一個 Buffer 類,該類別用來建立一個專門存放二進位資料的快取區。

在 node.js 中,Buffer 類別是隨 Node 核心一起發佈的核心函式庫。 Buffer 函式庫為Node.js 帶來了一種儲存原始資料的方法,可以讓Node.js 處理二進位數據,每當需要在Node.js 中處理I/O操作中移動的資料時,就有可能使用Buffer 函式庫。原始資料儲存在 Buffer 類別的實例中。一個 Buffer 類似於一個整數數組,但它對應於 V8 堆記憶體之外的一塊原始記憶體。

建立Buffer

1.长度为10的实例
var buf = new Buffer(10)
2.通过给定的数组创建
var buf = new Buffer([10,20,30,40,50])
3.通过字符串创建
var buf = new Buffer("www.csdn.net","utf-8")
utf-8 是默认的编码方式
支持以下编码:"ascii", "utf8", "utf16le", "ucs2", "base64" 和 "hex"。

#寫入快取區.write()

var buf = new Buffer(200)
var len = buf.write("www.csdn.net")
console.log("写入字节数:" + len)

  • string - 寫入緩衝區的字串。

  • offset - 緩衝區開始寫入的索引值,預設為 0 。

  • length - 寫入的位元組數,預設為 buffer.length

  • encoding - 使用的編碼。預設為 ‘utf8' 。

快取區讀取.toString()

#
buf = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
 buf[i] = i + 97;
}

console.log( buf.toString(&#39;ascii&#39;));    // 输出: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString(&#39;ascii&#39;,0,5));  // 输出: abcde
console.log( buf.toString(&#39;utf8&#39;,0,5));  // 输出: abcde
console.log( buf.toString(undefined,0,5)); // 使用 &#39;utf8&#39; 编码, 并输出: abcde

  1. # #encoding - 使用的編碼。預設為 ‘utf8' 。

  2. start - 指定開始讀取的索引位置,預設為 0。

  3. end - 結束位置,預設為緩衝區的結尾。

Buffer轉JSON

#

var buf = new Buffer(&#39;www.runoob.com&#39;);
var json = buf.toJSON(buf);
console.log(json);

合併Buffer.concat([, ])

var buf = new Buffer("北京")
var buf1 = new Buffer("上海")
var buf2 = Buffer.concat([buf,buf1],12)
console.log(buf2.toString())

  • #list用於合併的Buffer 物件陣列列表。

  • totalLength指定合併後Buffer物件的總長度。


比較.compare(otherBuffer)

#在Node.js v0.12.2 版本引入

#

var buffer1 = new Buffer("AVCX")
var buffer2 = new Buffer("ACVV")

var result = buffer1.compare(buffer2)

if(result < 0) {
  console.log(buffer1 + " 在 " + buffer2 + "之前");
}else if(result == 0){
  console.log(buffer1 + " 与 " + buffer2 + "相同");
}else {
  console.log(buffer1 + " 在 " + buffer2 + "之后");
}

##targetBuffer -要拷貝的Buffer 物件。

targetStart - 數字, 可選, 預設: 0

  1. sourceStart - 數字, 可選, 預設: 0

  2. #sourceEnd - 數字, 可選, 預設: buffer.length

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

  4. 剪裁.slice(buffer2)

var buf1 = new Buffer("beiJing")
var buf2 = new Buffer(8)
buf1.copy(buf2)
console.log("buf2 content:"+buf2.toString())

#start - 數字, 可選, 預設: 0

##end - 數字, 可選, 預設: buffer.length

  1. #回傳值
  2. ##回傳一個新的緩衝區,它和舊緩衝區指向同一塊內存,但是從索引start 到end 的位置剪切。

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

長度.length


var buf1 = new Buffer("beiJing")
var buf2 = buf1.slice(0,8)
console.log("buf2 content:"+buf2)
// beiJing

//傳回這個buffer 的bytes 數。注意這未必是 buffer 裡面內容的大小。 length 是 buffer 物件所分配的記憶體數,它不會隨著這個 buffer 物件內容的改變而改變。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

關於微信小程式的動態傳參

關於微信小程式的非同步處理

微信小程式開發中資料儲存、參數傳遞和資料快取的介紹


以上是微信小程式 Buffer緩衝區的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn