欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nodejs二進制與Buffer的介紹與使用

 更新時間:2019年07月11日 11:41:06   作者:小黎也  
這篇文章主要給大家介紹了關于nodejs二進制與Buffer的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用nodejs具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

Buffer 介紹

javascript 中對數(shù)據(jù)處理都是以字符串的形式,而對于二進制數(shù)據(jù)就不便于處理,所以 Buffer 便是用于讀取或操作二進制數(shù)據(jù)都對象。

一句話概括: Buffer 類是一個全局變量,用于直接處理二進制數(shù)據(jù),提供工具類方法。

官網(wǎng)上關于 Buffer 解釋的非常清楚,所以就不再拷貝官網(wǎng),這里列舉一些使用較為頻繁的場景。

對象轉換成Buffer

在操作文件或者IO的場景中,我們需要將對象轉換成二進制數(shù)據(jù)流。

引用官方文檔

  • Buffer.from(array) 返回一個新的 Buffer,其中包含提供的八位字節(jié)數(shù)組的副本。
  • Buffer.from(arrayBuffer[, byteOffset [, length]]) 返回一個新的 Buffer,它與給定的 ArrayBuffer 共享相同的已分配內(nèi)存。
  • Buffer.from(buffer) 返回一個新的 Buffer,其中包含給定 Buffer 的內(nèi)容的副本。
  • Buffer.from(string[, encoding]) 返回一個新的 Buffer,其中包含提供的字符串的副本。
  • Buffer.alloc(size[, fill[, encoding]]) 返回一個指定大小的新建的的已初始化的 Buffer。 此方法比 Buffer.allocUnsafe(size) 慢,但能確保新創(chuàng)建的 Buffer 實例永遠不會包含可能敏感的舊數(shù)據(jù)。
  • Buffer.allocUnsafe(size) 和 Buffer.allocUnsafeSlow(size) 分別返回一個指定大小的新建的未初始化的 Buffer。 由于 Buffer 是未初始化的,因此分配的內(nèi)存片段可能包含敏感的舊數(shù)據(jù)。

栗子如下

const obj = {
 name:'test'
}
const buffer = Buffer.from(JSON.stringify(obj),'utf8') // 默認編碼是 utf8 

Buffer 對象轉換成其它機制的字符串

我們可以看到 Buffer 對象是一個 Uint8Array 的實例,所以我們可以使用迭代器獲取 Buffer 中數(shù)組的值。


1、Buffer 對象轉二進制字符串,便利獲取到數(shù)組中的值,通過 Number.toString(radix) 方法,將整形轉換成二進制字符串,最后將各個數(shù)值的二進制字符串拼接起來即可。但為了后續(xù)對二進制操作方便,所以我們約定好二進制的長度,因為 Buffer 數(shù)組是在 0 到 255 之間的整數(shù)數(shù)組,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 的介紹網(wǎng)上有很多文章,但我覺得都不如官網(wǎng)寫的清晰,所以建議大家直接看文檔。

后續(xù)會繼續(xù)補充在工作中遇到與 Buffer 相關的使用場景,畢竟工具類函數(shù)只有在具體場景下分析才更有價值。

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • windows如何把已安裝的nodejs高版本降級為低版本(圖文教程)

    windows如何把已安裝的nodejs高版本降級為低版本(圖文教程)

    這篇文章主要介紹了windows如何把已安裝的nodejs高版本降級為低版本,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Node.js開發(fā)之訪問Redis數(shù)據(jù)庫教程

    Node.js開發(fā)之訪問Redis數(shù)據(jù)庫教程

    這篇文章主要介紹了Node.js開發(fā)之訪問Redis數(shù)據(jù)庫教程,本文講解了安裝Redis的Node.js驅(qū)動、編寫測試程序以及npm遠程服務器連接十分緩慢的解決方法,需要的朋友可以參考下
    2015-01-01
  • node.js平臺下的mysql數(shù)據(jù)庫配置及連接

    node.js平臺下的mysql數(shù)據(jù)庫配置及連接

    本文主要介紹了node.js平臺下的mysql數(shù)據(jù)庫配置及連接的相關知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • 用node擼一個監(jiān)測復聯(lián)4開售短信提醒的實現(xiàn)代碼

    用node擼一個監(jiān)測復聯(lián)4開售短信提醒的實現(xiàn)代碼

    這篇文章主要介紹了用node擼一個監(jiān)測復聯(lián)4開售短信提醒的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 基于node.js之調(diào)試器詳解

    基于node.js之調(diào)試器詳解

    下面小編就為大家?guī)硪黄趎ode.js之調(diào)試器詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 一文詳解npm如何更新項目最新依賴包

    一文詳解npm如何更新項目最新依賴包

    npm包的更新速度很快,為了將項目或者全局依賴更新到最新版本,下面這篇文章主要給大家介紹了關于npm如何更新項目最新依賴包的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • Egret引擎開發(fā)指南之創(chuàng)建項目

    Egret引擎開發(fā)指南之創(chuàng)建項目

    Egret Engine(白鷺引擎)是一款使用TypeScript語言構建的開源免費的移動游戲引擎。白鷺引擎的核心定位是開放,高效,優(yōu)雅。通過它,你可以快速地創(chuàng)建HTML5類型的移動游戲,也可以將游戲項目編譯輸出成為目標移動平臺的原生游戲應用。
    2014-09-09
  • npm安裝報錯npm ERR! Error: EPERM: operation not permitted解決

    npm安裝報錯npm ERR! Error: EPERM: operation&

    這篇文章主要為大家介紹了npm安裝報錯npm ERR! Error: EPERM: operation not permitted解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 垃圾回收器的相關知識點總結

    垃圾回收器的相關知識點總結

    本文是小編在網(wǎng)絡上整理的關于垃圾回收器的相關知識點,很多語言和程序都用的到,有興趣的可以學習下。
    2018-05-05
  • nodejs編寫bash腳本的終極方案分享

    nodejs編寫bash腳本的終極方案分享

    你懂JavaScript嗎?你需要寫一個Shell腳本嗎?那么你應該試一下Node.js,它很容易安裝,而且很適合通過寫Shell腳本來學習它,下面這篇文章主要給大家介紹了關于nodejs編寫bash腳本的終極方案,需要的朋友可以參考下
    2021-08-08

最新評論