// Buffer 與字符串的轉換示例
// Buffer 是 Node.js 中用于處理二進制數據的類,字符串與 Buffer 之間的轉換是常見操作// 1. 從字節數組創建 Buffer 并轉換為字符串
// Buffer.from(array) 接收一個字節數值數組,創建對應的 Buffer
let buf_4 = Buffer.from([105, 108, 111, 101, 121, 111, 117]);
// 解釋:數組中的每個數字代表一個 ASCII 碼值
// 105 -> 'i', 108->'l', 111->'o', 101->'e', 121->'y', 111->'o', 117->'u'// 將 Buffer 轉換為字符串(默認使用 UTF-8 編碼)
console.log(buf_4.toString());
// 輸出結果:"iloveyou"
// 解釋:Buffer 中的字節被解析為對應的字符,拼接后形成完整字符串// 2. 從字符串創建 Buffer 并修改其中的字節
// Buffer.from(string) 從字符串創建 Buffer,存儲字符串的 UTF-8 編碼字節
let buf = Buffer.from('hello world');
// 解釋:'hello world' 每個字符在 ASCII 中占 1 字節,共 11 字節// 打印 Buffer 內容(以十六進制表示)
console.log(buf);
// 輸出結果:<Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
// 解釋:每個十六進制值對應字符的 ASCII 碼
// 68->'h', 65->'e', 6c->'l', 6c->'l', 6f->'o', 20->' ', 77->'w', 6f->'o', 72->'r', 6c->'l', 64->'d'// 修改 Buffer 中索引為 0 的字節值(95 對應 ASCII 中的下劃線 '_')
buf[0] = 95;// 將修改后的 Buffer 轉換為字符串
console.log(buf.toString());
// 輸出結果:"_ello world"
// 解釋:原字符串第一個字符 'h' 被替換為 '_',其他字符保持不變// 3. 中文字符的 Buffer 存儲特性
// 從中文字符串創建 Buffer(UTF-8 編碼下中文通常占 3 字節)
let bufChinese = Buffer.from('你好');// 打印中文對應的 Buffer 內容
console.log(bufChinese);
// 輸出結果:<Buffer e4 bd a0 e5 a5 bd>
// 解釋:
// '你' 的 UTF-8 編碼為 3 字節:e4 bd a0
// '好' 的 UTF-8 編碼為 3 字節:e5 a5 bd
// 整個 Buffer 長度為 6 字節,體現了 UTF-8 編碼對多字節字符的支持
核心知識點總結:
?
- Buffer 創建方式:
Buffer.from()
?可接收數組、字符串等參數,創建對應的二進制緩沖區 - 編碼特性:
- 英文字符、數字、符號通常在 UTF-8 中占 1 字節(與 ASCII 兼容)
- 中文字符在 UTF-8 中通常占 3 字節
- 轉換方法:
buf.toString()
?可將 Buffer 轉回字符串,默認使用 UTF-8 編碼 - 字節操作:Buffer 可通過索引直接修改字節值,進而改變最終轉換的字符串