亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

nodejs中二進制與Buffer怎么用

發布時間:2021-08-12 09:35:25 來源:億速云 閱讀:199 作者:小新 欄目:web開發

這篇文章主要介紹了nodejs中二進制與Buffer怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Buffer 介紹

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

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

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

對象轉換成Buffer

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

引用官方文檔

  • Buffer.from(array) 返回一個新的 Buffer,其中包含提供的八位字節數組的副本。

  • Buffer.from(arrayBuffer[, byteOffset [, length]]) 返回一個新的 Buffer,它與給定的 ArrayBuffer 共享相同的已分配內存。

  • Buffer.from(buffer) 返回一個新的 Buffer,其中包含給定 Buffer 的內容的副本。

  • Buffer.from(string[, encoding]) 返回一個新的 Buffer,其中包含提供的字符串的副本。

  • Buffer.alloc(size[, fill[, encoding]]) 返回一個指定大小的新建的的已初始化的 Buffer。 此方法比 Buffer.allocUnsafe(size) 慢,但能確保新創建的 Buffer 實例永遠不會包含可能敏感的舊數據。

  • Buffer.allocUnsafe(size) 和 Buffer.allocUnsafeSlow(size) 分別返回一個指定大小的新建的未初始化的 Buffer。 由于 Buffer 是未初始化的,因此分配的內存片段可能包含敏感的舊數據。

栗子如下

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

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

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

nodejs中二進制與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();
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“nodejs中二進制與Buffer怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

八宿县| 社会| 岳普湖县| 济宁市| 洪雅县| 郧西县| 凉城县| 西盟| 曲松县| 台山市| 安国市| 饶平县| 稷山县| 枣阳市| 越西县| 阜平县| 库伦旗| 定远县| 闽侯县| 铜鼓县| 上饶市| 沐川县| 荥经县| 民勤县| 翁源县| 衡阳县| 潍坊市| 友谊县| 呼和浩特市| 疏勒县| 内江市| 钟祥市| 西贡区| 陇川县| 宁化县| 甘肃省| 六盘水市| 分宜县| 海晏县| 松溪县| 丰顺县|