Buffer 介紹
javascript 中對數據處理都是以字符串的形式,而對于二進制數據就不便于處理,所以 Buffer 便是用于讀取或操作二進制數據都對象。
一句話概括: Buffer 類是一個全局變量,用于直接處理二進制數據,提供工具類方法。
官網上關于 Buffer 解釋的非常清楚,所以就不再拷貝官網,這里列舉一些使用較為頻繁的場景。
對象轉換成Buffer
在操作文件或者IO的場景中,我們需要將對象轉換成二進制數據流。
引用官方文檔
栗子如下
const obj = { name:'test'}const buffer = Buffer.from(JSON.stringify(obj),'utf8') // 默認編碼是 utf8
Buffer 對象轉換成其它機制的字符串
我們可以看到 Buffer 對象是一個 Uint8Array 的實例,所以我們可以使用迭代器獲取 Buffer 中數組的值。
1、Buffer 對象轉二進制字符串,便利獲取到數組中的值,通過 Number.toString(radix) 方法,將整形轉換成二進制字符串,最后將各個數值的二進制字符串拼接起來即可。但為了后續對二進制操作方便,所以我們約定好二進制的長度,因為 Buffer 數組是在 0 到 255 之間的整數數組,255 的二進制是 8 位,所以我們在轉換過程中把不足八位的前置補零,當然這還是得看具體的場景.
bytesToBinary(bytes) { const length = bytes.length; let result = ''; for (let i = 0; i < length; i++) { const binStr = Number(bytes[i]).toString(2) result += '0'.repeat(8 - binStr.length) + binStr; // 不足八位前置補0 } return result.toString();}
2、Buffer轉成 16 進制也是類似,如下
bytesToBinary(bytes) { const length = bytes.length; let result = ''; for (let i = 0; i < length; i++) { const binStr = Number(bytes[i]).toString(16) result += '0'.repeat(2 - binStr.length) + binStr; // 不足二位前置補0 } return result.toString();}
小結
關于 Buffer 的介紹網上有很多文章,但我覺得都不如官網寫的清晰,所以建議大家直接看文檔。
后續會繼續補充在工作中遇到與 Buffer 相關的使用場景,畢竟工具類函數只有在具體場景下分析才更有價值。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。
新聞熱點
疑難解答