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

資訊專欄INFORMATION COLUMN

Node.js學習之路04——Buffer對象與字符串

dongfangyiyu / 2339人閱讀

摘要:對象與字符串對象的方法將對象中保存的數據轉換為字符串第一個參數用于指定對象中保存的文字編碼格式,默認參數值為第二個參數和第三個參數用于指定被轉換數據的起始位置與結束位置,不包含結束位置對象的方法向已經創建的對象中寫入字符串第一個參數為指定需

Buffer對象與字符串 1. Buffer對象的toString()方法

Buffer對象中保存的數據轉換為字符串

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

第一個參數用于指定Buffer對象中保存的文字編碼格式,默認參數值為utf8

第二個參數和第三個參數用于指定被轉換數據的起始位置與結束位置,不包含結束位置

var buf = new Buffer("BUFFER OBJECT");
console.log(buf);
console.log(buf.toString());
console.log(buf.toString("utf8", 2, 5));
// result

BUFFER OBJECT
FFE
2. Buffer對象的write()方法

向已經創建的Buffer對象中寫入字符串

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

第一個參數為指定需要寫入的字符串

第二個參數和第三個參數用于指定字符串轉換為字節數據后的寫入位置(包括起始值和結束值)

第四個參數為編碼格式,默認為utf8格式

var chinese = "一點點奶茶有點兒好喝";
var buf = new Buffer(chinese);
buf.write("二", 0, 3, "utf8"); 
console.log(buf.toString());
// 二點點奶茶有點兒好喝
在這個03區間內,實質上對應的是chinese字符串內的這個字,如果把3改成6,得到的結果依然是二點點奶茶有點兒好喝,因為申請的空間大于所寫入的空間,所以結果不變。
如果把buf.write("二", 0, 3, "utf8")中的改為二二,同樣給03區間,結果依然是二點點奶茶有點兒好喝,但是如果區間為06,那么結果就是二二點奶茶有點兒好喝
如果把buf.write("二", 0, 3, "utf8")改成buf.write("二二點奶茶不是可口可樂", 0, 30, "utf8") ,那么結果是二二點奶茶不是可口可,得到的buf的長度依然是30

所以,也就是說,bufwrite方法,只是把原buf的內容剪切掉,新內容如果剛好能放下,那么新內容將舊內容替換,如果不能剛好放下,那么從新內容的起始位置開始計算,能放多少就放多少,多余的部分舍去,不夠的部分,將不替換舊內容。

說白了,就是buf字節長度所對應的內容的替換。

3. StringDecoder對象
使用StringDecoder對象將Buffer對象中的數據轉換為字符串,該對象的作用與Buffer對象的toString方法的作用相同,但是對于utf8編碼格式的字符串提供更好的支持
var StringDecoder =  require("string_decoder").StringDecoder;
var decoder = new StringDecoder("utf8");
var buf = new Buffer("新垣結衣が主役の映畫");
console.log(decoder.write(buf));
// result
// 新垣結衣が主役の映畫
4. Buffer對象與JSON對象的互相轉換

JSON.stringify(buf)Buffer對象中保存的數據轉換為一個字符串

var buf = new Buffer("一點點奶茶有點兒好喝");
console.log(buf);
// 
var jsonBuffer = JSON.stringify(buf);
console.log(jsonBuffer);
{
    "type": "Buffer",
    "data": [228,184,128,231,130,185,231,130,185,229,165,182,232,140,182,230,156,137,231,130,185,229,132,191,229,165,189,229,150,157]
}
var data = [228,184,128,231,130,185,231,130,185,229,165,182,232,140,182,230,156,137,231,130,185,229,132,191,229,165,189,229,150,157];
var newData = []
data.forEach(function(elem){
    newData.push(elem.toString(16))
})
console.log(newData)
// ["e4","b8","80","e7","82","b9","e7","82","b9","e5","a5","b6","e8","8c","b6","e6","9c","89","e7","82","b9","e5","84","bf","e5","a5","bd","e5","96","9d"]

可以發現,對Buffer對象進行JSON.stringify()之后,得到的對象的data屬性的屬性值,轉換成16進制之后,就是該Buffer對象的字節值

5. 復制緩存數據

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

第一個參數用于指定復制的目標Buffer對象

第二個參數用于指定目標Buffer對象中從第幾個字節開始寫入數據,默認值是0

第三個參數用于指定復制源Buffer對象中獲取數據時的開始位置,默認值是0

第四個參數用于指定從復制源Buffer對象中獲取數據時的結束位置,默認值是復制源Buffer對象的長度

var buf1 = new Buffer("新垣結衣が主役の映畫「ミックス」が中國で公開へ");
console.log(buf1);
var buf2 = Buffer(256).fill(0);
console.log(buf2);
buf1.copy(buf2, 10, 12, 30);
console.log(buf2.toString());
/***
 * 
 * 
 *           が主役の映畫                                                                                                                                         
 ***/

buf1有值,buf2想要復制buf1的值,那么就是buf1.copy(buf2, , , )

6. Buffer類的類方法
6.1 isBuffer方法

Buffer.isBuffer(buf)

判斷一個對象是否為一個Buffer對象,返回結果為true或者false

6.2 byteLength方法

Buffer.byteLength(string, [encoding])

在不同的編碼格式下,同一個字符的字節長度是不一樣的

var japanese = "新垣結衣";
console.log(Buffer.byteLength(japanese, "utf8"));   //12
console.log(Buffer.byteLength(japanese, "utf16le"));//8
console.log(Buffer.byteLength(japanese, "base64")); //3
console.log(Buffer.byteLength(japanese, "hex"));    //2
console.log(Buffer.byteLength(japanese, "ascii"));  //4
6.3. concat方法,拼接Buffer對象的值

與字符串和數組的concat方法使用相同

var buf1 = new Buffer("新垣結衣が主役の映畫");
var buf2 = new Buffer("「ミックス」");
var buf3 = new Buffer("が中國で公開へ");
console.log(Buffer.concat([buf1, buf2, buf3]).toString());
// result
// 新垣結衣が主役の映畫「ミックス」が中國で公開へ
6.4. isEncoding方法

Buffer.isEncoding(encoding)

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

var code = "utf8";
console.log(Buffer.isEncoding(code));

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92809.html

相關文章

  • Node.js學習之路03——Buffer類初識

    摘要:然而,在處理流或文件流時,必須要處理二進制數據。因此,在中,定義了一個類,該類用來創建一個專門存放二進制數據的緩存區。因為在計算字符串的長度時,以位子作為一個單位,而在計算緩存區的長度時,以字節作為一個單位。 buffer對象 1. 什么是buffer 在客戶端Javascript腳本代碼中,對于二進制數據沒有提供一個很好的支持。然而,在處理TCP流或文件流時,必須要處理二進制數據...

    DobbyKim 評論0 收藏0
  • Node.js學習之路18——壓縮解壓

    摘要:壓縮與解壓縮處理在中,可以使用模塊進行壓縮及解壓縮處理創建各種用于壓縮及解壓縮的對象方法說明該方法創建并返回一個對象該對象使用算法對數據進行壓縮處理該方法創建并返回一個對象該對象使用算法對數據進行壓縮處理該方法創建并返回一個對象該對象使用算 壓縮與解壓縮處理 在Node.js中,可以使用zlib模塊進行壓縮及解壓縮處理. 1. 創建各種用于壓縮及解壓縮的對象 方法 說明 zl...

    tigerZH 評論0 收藏0
  • Node.js學習之路13——HTTPHTTPS

    摘要:和的區別服務器使用協議服務器使用協議服務器需要向證書授權中心申請證書一般免費證書何紹需要交費在少許讀客戶端有要求的情況下也會要求客戶端使用證書服務器于客戶端之間傳輸的是明文數據而服務器于客戶端之間傳輸的是經過安全加密后的密文數據服務器通常使 4. HTTP和HTTPS的區別 HTTPS服務器使用HTTPS協議,HTTP服務器使用HTTP協議. HTTPS服務器需要向證書授權(Ce...

    lei___ 評論0 收藏0
  • Node.js學習之路16——加密

    摘要:使用方法創建一個對象創建對象,加密算法為讀取該文件,為是文件的對象創建一個摘要輸出摘要算法算法將散列算法與一個密鑰結合在一起,以阻止對簽名完整性的破壞。 未完成 1. 加密crypto 在crypto模塊中,為每一種加密算法定義了一個類 可以使用getCiphers方法查看在Node.js中所有能夠使用的加密算法crypto.getCiphers() 可以使用getHashes(...

    zacklee 評論0 收藏0
  • Node.js學習之路26——Express的response對象

    摘要:如果包含字符則將設置為。添加字段到不同的響應頭將該字段添加到不同的響應標頭如果它尚未存在。 3. response對象 3.1 是否發送了響應頭 res.headersSent布爾屬性,app是否發送了httpheaders const express = require(express); const bodyParser = require(body-parser); cons...

    davidac 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<