麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

微信小程序 Buffer緩沖區的詳解

2019-11-19 16:09:01
字體:
來源:轉載
供稿:網友

 微信小程序 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('ascii'));    // 輸出: abcdefghijklmnopqrstuvwxyzconsole.log( buf.toString('ascii',0,5));  // 輸出: abcdeconsole.log( buf.toString('utf8',0,5));  // 輸出: abcdeconsole.log( buf.toString(undefined,0,5)); // 使用 'utf8' 編碼, 并輸出: abcde
  1. encoding - 使用的編碼。默認為 ‘utf8' 。
  2. start - 指定開始讀取的索引位置,默認為 0。
  3. end - 結束位置,默認為緩沖區的末尾。

Buffer轉JSON

var buf = new Buffer('www.runoob.com');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 + "之后");}

拷貝 .compare(buffer2)

buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
  1. targetBuffer - 要拷貝的 Buffer 對象。
  2. targetStart - 數字, 可選, 默認: 0
  3. sourceStart - 數字, 可選, 默認: 0
  4. sourceEnd - 數字, 可選, 默認: buffer.length
var buf1 = new Buffer("beiJing")var buf2 = new Buffer(8)buf1.copy(buf2)console.log("buf2 content:"+buf2.toString())

剪裁 .slice(buffer2)

buf.slice([start[, end]])
  1. start - 數字, 可選, 默認: 0
  2. end - 數字, 可選, 默認: buffer.length

返回值

返回一個新的緩沖區,它和舊緩沖區指向同一塊內存,但是從索引 start 到 end 的位置剪切。

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

長度 .length

buf.length;

//返回這個 buffer 的 bytes 數。注意這未必是 buffer 里面內容的大小。length 是 buffer 對象所分配的內存數,它不會隨著這個 buffer 對象內容的改變而改變。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 视频在线亚洲 | 性欧美日本 | 成人一级在线 | a黄色片| 中文字幕xxx | 老师你怎么会在这第2季出现 | 免费国产人成网站 | 久久精品国产99国产精品澳门 | 激情五月少妇a | 久久久青 | 99热久草 | 国产成人精品免费视频大全办公室 | 亚洲精品久久久久久久久久久 | 九色com | av电影在线网站 | 日操操夜操操 | 福利一区二区三区视频在线观看 | 国产免费永久在线观看 | 国产精品av久久久久久网址 | 九九色在线观看 | 免费黄色成人 | 天天干干 | 中文字幕一区二区三区久久 | 日本综合久久 | 成人精品视频在线 | 精品亚洲午夜久久久久91 | 免费看成年人网站 | 999精品久久久 | 成人观看网站 | 麻豆视频国产在线观看 | 亚洲一区二区三区精品在线观看 | 99国内精品 | a黄在线观看 | 欧美精品欧美极品欧美激情 | 99精品国产一区二区三区 | 午夜天堂在线 | 中国成人在线视频 | 亚洲精品一区二区三区大胸 | 日本a级一区 | 亚洲性综合网 | 毛片免费视频播放 |