我們知道Node.js框架下的Buffer物件能夠對二進位資料提供很好的支持,那麼取得一個Buffer物件真實的位元組長度則是必須要用到的功能了。 Node.js框架為開發人員提供了一個Buffer.byteLength()方法,下面我們借助一個官方文件提供的例程向讀者演示一下該方法的使用過程。
本例ch04.buffer-byteLength.js主要程式碼如下:
/** * ch04.buffer-byteLength.js */ console.info("------Buffer.byteLength()------"); console.info(); str = '\u00bd + \u00bc = \u00be'; //定义字符串 //½ + ¼ = ¾: 9 characters, 12 bytes console.log(str + ": " + str.length + " characters, " + Buffer.byteLength(str, 'utf8') + " bytes"); console.info(); 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個字元其實佔用了兩個位元組的長度。
提示:本節我們需要了解字元與位元組這兩個概念的異同,在電腦編碼中一個位元組佔用8 bit(1 byte = 8 bit) ,而一個字符可能是一個單字節字符,也可能是雙字節字符。另外,Buffer.byteLength()方法在寫http回應頭時常常要用到,如果想改寫http回應頭Cotent-Length時,千萬記得一定要用Buffer.byteLength()方法,而不要使用String.prototype. length屬性。
以上就是為大家分享的第一個超實用的Node.js程式碼段,下面還有更多精彩的Node.js程式碼段,不要錯過,希望對大家的學習有所幫助。