摘要:對象與字符串對象的方法將對象中保存的數(shù)據轉換為字符串第一個參數(shù)用于指定對象中保存的文字編碼格式,默認參數(shù)值為第二個參數(shù)和第三個參數(shù)用于指定被轉換數(shù)據的起始位置與結束位置,不包含結束位置對象的方法向已經創(chuàng)建的對象中寫入字符串第一個參數(shù)為指定需
Buffer對象與字符串 1. Buffer對象的toString()方法
將Buffer對象中保存的數(shù)據轉換為字符串
toString([encoding], [start], [end])
第一個參數(shù)用于指定Buffer對象中保存的文字編碼格式,默認參數(shù)值為utf8
第二個參數(shù)和第三個參數(shù)用于指定被轉換數(shù)據的起始位置與結束位置,不包含結束位置
var buf = new Buffer("BUFFER OBJECT"); console.log(buf); console.log(buf.toString()); console.log(buf.toString("utf8", 2, 5)); // result2. Buffer對象的write()方法BUFFER OBJECT FFE
向已經創(chuàng)建的Buffer對象中寫入字符串
buf.write(string, [offset], [length], [encoding])
第一個參數(shù)為指定需要寫入的字符串
第二個參數(shù)和第三個參數(shù)用于指定字符串轉換為字節(jié)數(shù)據后的寫入位置(包括起始值和結束值)
第四個參數(shù)為編碼格式,默認為utf8格式
var chinese = "一點點奶茶有點兒好喝"; var buf = new Buffer(chinese); buf.write("二", 0, 3, "utf8"); console.log(buf.toString()); // 二點點奶茶有點兒好喝
在這個0到3區(qū)間內,實質上對應的是chinese字符串內的一這個字,如果把3改成6,得到的結果依然是二點點奶茶有點兒好喝,因為申請的空間大于所寫入的空間,所以結果不變。3. StringDecoder對象
如果把buf.write("二", 0, 3, "utf8")中的二改為二二,同樣給0到3區(qū)間,結果依然是二點點奶茶有點兒好喝,但是如果區(qū)間為0到6,那么結果就是二二點奶茶有點兒好喝,
如果把buf.write("二", 0, 3, "utf8")改成buf.write("二二點奶茶不是可口可樂", 0, 30, "utf8") ,那么結果是二二點奶茶不是可口可,得到的buf的長度依然是30所以,也就是說,buf的write方法,只是把原buf的內容剪切掉,新內容如果剛好能放下,那么新內容將舊內容替換,如果不能剛好放下,那么從新內容的起始位置開始計算,能放多少就放多少,多余的部分舍去,不夠的部分,將不替換舊內容。
說白了,就是buf字節(jié)長度所對應的內容的替換。
使用StringDecoder對象將Buffer對象中的數(shù)據轉換為字符串,該對象的作用與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對象中保存的數(shù)據轉換為一個字符串
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"]
可以發(fā)現(xiàn),對Buffer對象進行JSON.stringify()之后,得到的對象的data屬性的屬性值,轉換成16進制之后,就是該Buffer對象的字節(jié)值
5. 復制緩存數(shù)據buf.copy(targetBuffer, [targetStart], [sourceStart], [sourceEnd])
第一個參數(shù)用于指定復制的目標Buffer對象
第二個參數(shù)用于指定目標Buffer對象中從第幾個字節(jié)開始寫入數(shù)據,默認值是0
第三個參數(shù)用于指定復制源Buffer對象中獲取數(shù)據時的開始位置,默認值是0
第四個參數(shù)用于指定從復制源Buffer對象中獲取數(shù)據時的結束位置,默認值是復制源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,
Buffer.isBuffer(buf)
判斷一個對象是否為一個Buffer對象,返回結果為true或者false
Buffer.byteLength(string, [encoding])
在不同的編碼格式下,同一個字符的字節(jié)長度是不一樣的
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
與字符串和數(shù)組的concat方法使用相同
var buf1 = new Buffer("新垣結衣が主役の映畫"); var buf2 = new Buffer("「ミックス」"); var buf3 = new Buffer("が中國で公開へ"); console.log(Buffer.concat([buf1, buf2, buf3]).toString()); // result // 新垣結衣が主役の映畫「ミックス」が中國で公開へ
Buffer.isEncoding(encoding)
檢測一個字符串是否為一個有效的編碼格式字符串
var code = "utf8"; console.log(Buffer.isEncoding(code));
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/92809.html
摘要:然而,在處理流或文件流時,必須要處理二進制數(shù)據。因此,在中,定義了一個類,該類用來創(chuàng)建一個專門存放二進制數(shù)據的緩存區(qū)。因為在計算字符串的長度時,以位子作為一個單位,而在計算緩存區(qū)的長度時,以字節(jié)作為一個單位。 buffer對象 1. 什么是buffer 在客戶端Javascript腳本代碼中,對于二進制數(shù)據沒有提供一個很好的支持。然而,在處理TCP流或文件流時,必須要處理二進制數(shù)據...
摘要:壓縮與解壓縮處理在中,可以使用模塊進行壓縮及解壓縮處理創(chuàng)建各種用于壓縮及解壓縮的對象方法說明該方法創(chuàng)建并返回一個對象該對象使用算法對數(shù)據進行壓縮處理該方法創(chuàng)建并返回一個對象該對象使用算法對數(shù)據進行壓縮處理該方法創(chuàng)建并返回一個對象該對象使用算 壓縮與解壓縮處理 在Node.js中,可以使用zlib模塊進行壓縮及解壓縮處理. 1. 創(chuàng)建各種用于壓縮及解壓縮的對象 方法 說明 zl...
摘要:和的區(qū)別服務器使用協(xié)議服務器使用協(xié)議服務器需要向證書授權中心申請證書一般免費證書何紹需要交費在少許讀客戶端有要求的情況下也會要求客戶端使用證書服務器于客戶端之間傳輸?shù)氖敲魑臄?shù)據而服務器于客戶端之間傳輸?shù)氖墙涍^安全加密后的密文數(shù)據服務器通常使 4. HTTP和HTTPS的區(qū)別 HTTPS服務器使用HTTPS協(xié)議,HTTP服務器使用HTTP協(xié)議. HTTPS服務器需要向證書授權(Ce...
摘要:使用方法創(chuàng)建一個對象創(chuàng)建對象,加密算法為讀取該文件,為是文件的對象創(chuàng)建一個摘要輸出摘要算法算法將散列算法與一個密鑰結合在一起,以阻止對簽名完整性的破壞。 未完成 1. 加密crypto 在crypto模塊中,為每一種加密算法定義了一個類 可以使用getCiphers方法查看在Node.js中所有能夠使用的加密算法crypto.getCiphers() 可以使用getHashes(...
摘要:如果包含字符則將設置為。添加字段到不同的響應頭將該字段添加到不同的響應標頭如果它尚未存在。 3. response對象 3.1 是否發(fā)送了響應頭 res.headersSent布爾屬性,app是否發(fā)送了httpheaders const express = require(express); const bodyParser = require(body-parser); cons...
閱讀 3698·2021-11-25 09:43
閱讀 2659·2021-11-25 09:43
閱讀 3857·2021-11-24 09:38
閱讀 704·2021-11-18 10:02
閱讀 2246·2021-09-22 15:53
閱讀 3007·2019-08-30 15:44
閱讀 2783·2019-08-30 14:01
閱讀 2769·2019-08-29 15:15