咱們知道Node.js框架下的Buffer對象可以對二進制數據提供很好的支持,那麼獲取一個Buffer對象真實的字節長度則是必需要用到的功能了。Node.js框架爲開發人員提供了一個Buffer.byteLength()方法,下面咱們藉助一個官方文檔提供的例程向讀者演示一下該方法的使用過程。javascript
本例ch04.buffer-byteLength.js主要代碼以下:java
01 /** 02 * ch04.buffer-byteLength.js 03 */ 04 console.info("------Buffer.byteLength()------"); 05 console.info(); 06 str = '\u00bd + \u00bc = \u00be'; //定義字符串 07 //½ + ¼ = ¾: 9 characters, 12 bytes 08 console.log(str + ": " + str.length + " characters, " + Buffer.byteLength(str, 'utf8') + " bytes"); 09 console.info(); 10 console.info("------Buffer.byteLength()------");
【代碼分析】框架
第06行代碼定義並初始化了一個字符串變量,其變量名爲str,數據內容爲\u00bd + \u00bc = \u00be,讀者能夠去相關網站查閱一下這幾個16進制編碼,\u00bd表明字符"½",\u00bc表明字符"¼",\u00be表明字符"¾";而後,在第08行代碼經過打印輸出str.length屬性來顯示字符串變量str的長度,經過Buffer.byteLength()方法來顯示字符串變量str的真實字節長度,關於Buffer.byteLength()方法的語法說明以下:網站
語法:Buffer.byteLength(string[, encoding])
該方法返回一個Number數字,用來表示string參數的真實字節長度,encoding參數默認爲"utf8"編碼格式。編碼
從圖4.4中顯示的結果能夠看到,字符串str的length屬性爲9個字符長度,而佔用字節長度爲12 個,所以咱們能夠知道"½"、"¼"和"¾"這3個字符其實佔用了兩個字節的長度。spa
提示:本節咱們須要瞭解字符與字節這兩個概念的異同,在計算機編碼中一個字節佔用8 bit(1 byte = 8 bit),而一個字符多是一個單字節字符,也多是雙字節字符。另外,Buffer.byteLength()方法在寫http響應頭時常常要用到,若是想改寫http響應頭Cotent-Length時,千萬記得必定要用Buffer.byteLength()方法,而不要使用 String.prototype.length屬性。prototype
摘自對象