国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Node.js學(xué)習(xí)之路03——Buffer類初識

DobbyKim / 2056人閱讀

摘要:然而,在處理流或文件流時(shí),必須要處理二進(jìn)制數(shù)據(jù)。因此,在中,定義了一個(gè)類,該類用來創(chuàng)建一個(gè)專門存放二進(jìn)制數(shù)據(jù)的緩存區(qū)。因?yàn)樵谟?jì)算字符串的長度時(shí),以位子作為一個(gè)單位,而在計(jì)算緩存區(qū)的長度時(shí),以字節(jié)作為一個(gè)單位。

buffer對象 1. 什么是buffer
在客戶端Javascript腳本代碼中,對于二進(jìn)制數(shù)據(jù)沒有提供一個(gè)很好的支持。然而,在處理TCP流或文件流時(shí),必須要處理二進(jìn)制數(shù)據(jù)。因此,在Node.js中,定義了一個(gè)Buffer類,該類用來創(chuàng)建一個(gè)專門存放二進(jìn)制數(shù)據(jù)的緩存區(qū)。

簡單來說,Buffer對象就是為了處理TCP數(shù)據(jù)流(暫且不表)和文件,比如讀取一個(gè)txt文件,一張jpeg格式的圖片,或者是一個(gè)word文檔,都可以。

2. 創(chuàng)建buffer對象

直接使用new關(guān)鍵字來創(chuàng)建該類的實(shí)例對象

var buf = new Buffer()
3. Buffer類擁有三種形式的構(gòu)造函數(shù) 3.1 將緩存區(qū)大小(以字節(jié)為單位)指定為構(gòu)造函數(shù)的參數(shù) 3.1.1 Bufferlength屬性

被創(chuàng)建的Buffer對象擁有一個(gè)length屬性,這個(gè)屬性值就是創(chuàng)建的Buffer對象的緩存區(qū)大小

var buf = new Buffer(100);
console.log(buf);
console.log(buf.length);

// result

100
3.1.2 初始化創(chuàng)建的Buffer對象

此時(shí)創(chuàng)建的buf對象,沒有被初始化,換句話說,就是每次console.log(buf)的結(jié)果都是不一樣的,但是這個(gè)buf對象的length屬性是固定的100


// 再次console.log(buf),輸出的結(jié)果與上面的不一樣

使用Buffer對象的fill方法來初始化緩存區(qū)中的內(nèi)容

buf.fill(val, [offset], [end])

第一個(gè)參數(shù)為必填的Buffer對象的填充值,填充值均以16進(jìn)制計(jì)算

一般val參數(shù)的值為0

如果val參數(shù)為數(shù)值,填充的結(jié)果就是參數(shù)val

如果val參數(shù)為數(shù)組或?qū)ο螅畛涞慕Y(jié)果全部為0

如果val參數(shù)為true,填充的結(jié)果全部為1

如果val參數(shù)為false,填充的結(jié)果全部為0

如果val參數(shù)為字符串,填充的結(jié)果全部為,每個(gè)字符串中的字符所對應(yīng)的ascii表中的值,并且每個(gè)字符依次在length值內(nèi)循環(huán)

第二個(gè)參數(shù)和第三個(gè)參數(shù)可選

offset表示為起始位置寫入,默認(rèn)為0

end表示將數(shù)值寫入到第幾個(gè)字節(jié)處,默認(rèn)為length的值

3.2 直接使用一個(gè)數(shù)組來初始化緩存區(qū)
var buf = new Buffer(["a", "b", "c"]);
console.log(buf)
// result
3.3 直接使用一個(gè)字符串來初始化緩存區(qū)
var buf = new Buffer(str, [encoding])

第一個(gè)參數(shù)str為初始化緩存區(qū)的字符串,第二個(gè)參數(shù)encoding用于指定文字編碼格式的字符串,默認(rèn)為utf8

不同編碼格式輸出結(jié)果

var ascii = new Buffer("aLittleTea一點(diǎn)點(diǎn)", "ascii");
console.log("ascii  ", ascii);
// result
// ascii   

var utf8 = new Buffer("aLittleTea一點(diǎn)點(diǎn)", "utf8");
console.log("utf8   ", utf8);
// result
// utf8    

var utf16le = new Buffer("aLittleTea一點(diǎn)點(diǎn)", "utf16le");
console.log("utf16le", utf16le);
// result
// utf16le 

var ucs2 = new Buffer("aLittleTea一點(diǎn)點(diǎn)", "ucs2");
console.log("ucs2   ", ucs2);
// result
// ucs2    

var base64 = new Buffer("aLittleTea一點(diǎn)點(diǎn)", "base64");
console.log("base64 ", base64);
// result
// base64  

var binary = new Buffer("aLittleTea一點(diǎn)點(diǎn)", "binary");
console.log("binary ", binary);
// result
// binary  

var hex = new Buffer("aLittleTea", "hex");
console.log("hex    ", hex);
// result
// hex     
4. 字符串的長度與緩存區(qū)的長度
在Node.js中,一個(gè)字符串的長度與根據(jù)該字符串所創(chuàng)建的緩存區(qū)的長度并不相同。因?yàn)樵谟?jì)算字符串的長度時(shí),以位子作為一個(gè)單位,而在計(jì)算緩存區(qū)的長度時(shí),以字節(jié)作為一個(gè)單位。
一個(gè)漢字字符串的長度為1,但是一個(gè)漢字在Buffer緩存區(qū)中字節(jié)的長度為3,換句話說,在Node.js的Buffer類中,一個(gè)漢字的字節(jié)長度為3
var chinese = "一點(diǎn)點(diǎn)奶茶有點(diǎn)兒好喝";
var buf = new Buffer(chinese);
console.log(buf);
// result
// 

console.log(chinese.length);  // 10
console.log(buf.length);      // 30
console.log(chinese[4]);      // 茶
console.log(buf[4]);          // 130  注:在buf中編碼為16進(jìn)制,輸出的結(jié)果是10進(jìn)制  
// 修改chinese的某一個(gè)字符
chinese[4] = "昔";
// 字符串對象一旦被創(chuàng)建,就不可以被修改
console.log(chinese);         // 一點(diǎn)點(diǎn)奶茶有點(diǎn)兒好喝
// 修改buf的某一個(gè)字節(jié)
buf[0] = "e4";
buf[1] = "ba";
buf[2] = "8c";
console.log(buf)
// 
// 被修改的前三個(gè)字節(jié)全都是00

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/92813.html

相關(guān)文章

  • Node.js學(xué)習(xí)之路04——Buffer對象與字符串

    摘要:對象與字符串對象的方法將對象中保存的數(shù)據(jù)轉(zhuǎn)換為字符串第一個(gè)參數(shù)用于指定對象中保存的文字編碼格式,默認(rèn)參數(shù)值為第二個(gè)參數(shù)和第三個(gè)參數(shù)用于指定被轉(zhuǎn)換數(shù)據(jù)的起始位置與結(jié)束位置,不包含結(jié)束位置對象的方法向已經(jīng)創(chuàng)建的對象中寫入字符串第一個(gè)參數(shù)為指定需 Buffer對象與字符串 1. Buffer對象的toString()方法 將Buffer對象中保存的數(shù)據(jù)轉(zhuǎn)換為字符串 toString([e...

    dongfangyiyu 評論0 收藏0
  • 初識Node.js

    摘要:一旦替換已經(jīng)完成,該模塊將被完全棄用。用作錯(cuò)誤處理事件文件,由在標(biāo)準(zhǔn)功能上的簡單包裝器提供所有模塊都提供這些對象。 Node.js簡介 Node 定義 Node.js是一個(gè)建立在Chrome v8 引擎上的javascript運(yùn)行時(shí)環(huán)境 Node 特點(diǎn) 異步事件驅(qū)動(dòng) showImg(https://segmentfault.com/img/bVMLD1?w=600&h=237); no...

    lk20150415 評論0 收藏0
  • Node.js學(xué)習(xí)之路05——fs文件系統(tǒng)之文件的寫入和讀取

    fs文件系統(tǒng) 在Node.js中,提供一個(gè)fs模塊,以實(shí)現(xiàn)文件及目錄的讀寫操作。 1. 同步和異步方法 一般來講,讀取文件使用異步的方法,但是在讀取例如系統(tǒng)配置文件時(shí),應(yīng)該使用同步的方法 2. 普通文件寫入和讀取 2.1 文件寫入 2.1.1 寫入一個(gè)基本的文本文件 如果不存在要寫入的文件,那么將會(huì)自動(dòng)創(chuàng)建一個(gè)文件 const fs = require(fs); let writeData = T...

    leanote 評論0 收藏0

發(fā)表評論

0條評論

DobbyKim

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<