摘要:然而,在處理流或文件流時,必須要處理二進制數據。因此,在中,定義了一個類,該類用來創建一個專門存放二進制數據的緩存區。因為在計算字符串的長度時,以位子作為一個單位,而在計算緩存區的長度時,以字節作為一個單位。
buffer對象 1. 什么是buffer
在客戶端Javascript腳本代碼中,對于二進制數據沒有提供一個很好的支持。然而,在處理TCP流或文件流時,必須要處理二進制數據。因此,在Node.js中,定義了一個Buffer類,該類用來創建一個專門存放二進制數據的緩存區。
簡單來說,Buffer對象就是為了處理TCP數據流(暫且不表)和文件,比如讀取一個txt文件,一張jpeg格式的圖片,或者是一個word文檔,都可以。
2. 創建buffer對象直接使用new關鍵字來創建該類的實例對象
var buf = new Buffer()3. Buffer類擁有三種形式的構造函數 3.1 將緩存區大小(以字節為單位)指定為構造函數的參數 3.1.1 Buffer的length屬性
被創建的Buffer對象擁有一個length屬性,這個屬性值就是創建的Buffer對象的緩存區大小
var buf = new Buffer(100); console.log(buf); console.log(buf.length); // result3.1.2 初始化創建的Buffer對象100
此時創建的buf對象,沒有被初始化,換句話說,就是每次console.log(buf)的結果都是不一樣的,但是這個buf對象的length屬性是固定的100
// 再次console.log(buf),輸出的結果與上面的不一樣
使用Buffer對象的fill方法來初始化緩存區中的內容
buf.fill(val, [offset], [end])
第一個參數為必填的Buffer對象的填充值,填充值均以16進制計算
一般val參數的值為0
如果val參數為數值,填充的結果就是參數val
如果val參數為數組或對象,填充的結果全部為0
如果val參數為true,填充的結果全部為1
如果val參數為false,填充的結果全部為0
如果val參數為字符串,填充的結果全部為,每個字符串中的字符所對應的ascii表中的值,并且每個字符依次在length值內循環
第二個參數和第三個參數可選
offset表示為起始位置寫入,默認為0
end表示將數值寫入到第幾個字節處,默認為length的值
3.2 直接使用一個數組來初始化緩存區var buf = new Buffer(["a", "b", "c"]); console.log(buf) // result3.3 直接使用一個字符串來初始化緩存區
var buf = new Buffer(str, [encoding])
第一個參數str為初始化緩存區的字符串,第二個參數encoding用于指定文字編碼格式的字符串,默認為utf8
不同編碼格式輸出結果
var ascii = new Buffer("aLittleTea一點點", "ascii"); console.log("ascii ", ascii); // result // ascii4. 字符串的長度與緩存區的長度var utf8 = new Buffer("aLittleTea一點點", "utf8"); console.log("utf8 ", utf8); // result // utf8 var utf16le = new Buffer("aLittleTea一點點", "utf16le"); console.log("utf16le", utf16le); // result // utf16le var ucs2 = new Buffer("aLittleTea一點點", "ucs2"); console.log("ucs2 ", ucs2); // result // ucs2 var base64 = new Buffer("aLittleTea一點點", "base64"); console.log("base64 ", base64); // result // base64 var binary = new Buffer("aLittleTea一點點", "binary"); console.log("binary ", binary); // result // binary var hex = new Buffer("aLittleTea", "hex"); console.log("hex ", hex); // result // hex
在Node.js中,一個字符串的長度與根據該字符串所創建的緩存區的長度并不相同。因為在計算字符串的長度時,以位子作為一個單位,而在計算緩存區的長度時,以字節作為一個單位。
一個漢字字符串的長度為1,但是一個漢字在Buffer緩存區中字節的長度為3,換句話說,在Node.js的Buffer類中,一個漢字的字節長度為3
var chinese = "一點點奶茶有點兒好喝"; 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進制,輸出的結果是10進制 // 修改chinese的某一個字符 chinese[4] = "昔"; // 字符串對象一旦被創建,就不可以被修改 console.log(chinese); // 一點點奶茶有點兒好喝 // 修改buf的某一個字節 buf[0] = "e4"; buf[1] = "ba"; buf[2] = "8c"; console.log(buf) // // 被修改的前三個字節全都是00
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/92813.html
摘要:對象與字符串對象的方法將對象中保存的數據轉換為字符串第一個參數用于指定對象中保存的文字編碼格式,默認參數值為第二個參數和第三個參數用于指定被轉換數據的起始位置與結束位置,不包含結束位置對象的方法向已經創建的對象中寫入字符串第一個參數為指定需 Buffer對象與字符串 1. Buffer對象的toString()方法 將Buffer對象中保存的數據轉換為字符串 toString([e...
摘要:一旦替換已經完成,該模塊將被完全棄用。用作錯誤處理事件文件,由在標準功能上的簡單包裝器提供所有模塊都提供這些對象。 Node.js簡介 Node 定義 Node.js是一個建立在Chrome v8 引擎上的javascript運行時環境 Node 特點 異步事件驅動 showImg(https://segmentfault.com/img/bVMLD1?w=600&h=237); no...
fs文件系統 在Node.js中,提供一個fs模塊,以實現文件及目錄的讀寫操作。 1. 同步和異步方法 一般來講,讀取文件使用異步的方法,但是在讀取例如系統配置文件時,應該使用同步的方法 2. 普通文件寫入和讀取 2.1 文件寫入 2.1.1 寫入一個基本的文本文件 如果不存在要寫入的文件,那么將會自動創建一個文件 const fs = require(fs); let writeData = T...
閱讀 3076·2021-09-28 09:43
閱讀 908·2021-09-08 09:35
閱讀 1449·2019-08-30 15:56
閱讀 1192·2019-08-30 13:00
閱讀 2739·2019-08-29 18:35
閱讀 1836·2019-08-29 14:07
閱讀 3443·2019-08-29 13:13
閱讀 1337·2019-08-29 12:40