最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs二進(jìn)制與Buffer的介紹與使用

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

Buffer 介紹

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

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

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

對(duì)象轉(zhuǎn)換成Buffer

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

引用官方文檔

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

栗子如下

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

Buffer 對(duì)象轉(zhuǎn)換成其它機(jī)制的字符串

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


1、Buffer 對(duì)象轉(zhuǎn)二進(jìn)制字符串,便利獲取到數(shù)組中的值,通過(guò) Number.toString(radix) 方法,將整形轉(zhuǎn)換成二進(jìn)制字符串,最后將各個(gè)數(shù)值的二進(jìn)制字符串拼接起來(lái)即可。但為了后續(xù)對(duì)二進(jìn)制操作方便,所以我們約定好二進(jìn)制的長(zhǎng)度,因?yàn)?Buffer 數(shù)組是在 0 到 255 之間的整數(shù)數(shù)組,255 的二進(jìn)制是 8 位,所以我們?cè)谵D(zhuǎn)換過(guò)程中把不足八位的前置補(bǔ)零,當(dāng)然這還是得看具體的場(chǎng)景.

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; // 不足八位前置補(bǔ)0
 }
 return result.toString();
}

2、Buffer轉(zhuǎn)成 16 進(jìn)制也是類(lèi)似,如下

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; // 不足二位前置補(bǔ)0
 }
 return result.toString();
}

小結(jié)

關(guān)于 Buffer 的介紹網(wǎng)上有很多文章,但我覺(jué)得都不如官網(wǎng)寫(xiě)的清晰,所以建議大家直接看文檔。

后續(xù)會(huì)繼續(xù)補(bǔ)充在工作中遇到與 Buffer 相關(guān)的使用場(chǎng)景,畢竟工具類(lèi)函數(shù)只有在具體場(chǎng)景下分析才更有價(jià)值。

總結(jié)

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

相關(guān)文章

  • 使用socket.io實(shí)現(xiàn)簡(jiǎn)單聊天室案例

    使用socket.io實(shí)現(xiàn)簡(jiǎn)單聊天室案例

    這篇文章主要介紹了使用socket.io實(shí)現(xiàn)簡(jiǎn)單聊天室案例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • nvm報(bào)錯(cuò)Now?using?node?v版本號(hào)(64-bit)圖文解決方法

    nvm報(bào)錯(cuò)Now?using?node?v版本號(hào)(64-bit)圖文解決方法

    這篇文章主要給大家介紹了關(guān)于nvm報(bào)錯(cuò)Now?using?node?v版本號(hào)(64-bit)的解決方法,文中將解決的辦法介紹的非常詳細(xì),對(duì)遇到這個(gè)問(wèn)題的朋友具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-11-11
  • node.js中的fs.lstatSync方法使用說(shuō)明

    node.js中的fs.lstatSync方法使用說(shuō)明

    這篇文章主要介紹了node.js中的fs.lstatSync方法使用說(shuō)明,本文介紹了fs.lstatSync的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Node.js+Socket.io實(shí)現(xiàn)雙人在線五子棋對(duì)戰(zhàn)

    Node.js+Socket.io實(shí)現(xiàn)雙人在線五子棋對(duì)戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了Node.js+Socket.io實(shí)現(xiàn)雙人在線五子棋對(duì)戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Node.js 中如何收集和解析命令行參數(shù)

    Node.js 中如何收集和解析命令行參數(shù)

    這篇文章主要介紹了Node.js 中如何收集和解析命令行參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 淺談Node.js:Buffer模塊

    淺談Node.js:Buffer模塊

    本篇文章主要介紹了Node.js:Buffer模塊,詳細(xì)的介紹了創(chuàng)建Buffer實(shí)例,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-12-12
  • Express框架實(shí)現(xiàn)簡(jiǎn)單攔截器功能示例

    Express框架實(shí)現(xiàn)簡(jiǎn)單攔截器功能示例

    這篇文章主要介紹了Express框架實(shí)現(xiàn)簡(jiǎn)單攔截器功能,結(jié)合實(shí)例形式分析了express框架攔截器相關(guān)功能與使用方法,需要的朋友可以參考下
    2023-05-05
  • NODE.JS跨域問(wèn)題的完美解決方案

    NODE.JS跨域問(wèn)題的完美解決方案

    這篇文章主要介紹了NODE.JS跨域問(wèn)題的完美解決方案,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • Node.js 路由的實(shí)現(xiàn)方法

    Node.js 路由的實(shí)現(xiàn)方法

    這篇文章主要介紹了Node.js 路由的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • jQuery+koa2實(shí)現(xiàn)簡(jiǎn)單的Ajax請(qǐng)求的示例

    jQuery+koa2實(shí)現(xiàn)簡(jiǎn)單的Ajax請(qǐng)求的示例

    這篇文章主要介紹了jQuery+koa2實(shí)現(xiàn)簡(jiǎn)單的Ajax請(qǐng)求的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03

最新評(píng)論

黎平县| 新密市| 罗平县| 乌拉特中旗| 若尔盖县| 竹山县| 剑阁县| 南投县| 永年县| 灵寿县| 确山县| 凤城市| 高雄县| 黔西| 巩留县| 白玉县| 达尔| 峨边| 新平| 黔西县| 孟津县| 清远市| 台东县| 内乡县| 湟中县| 济南市| 长沙市| 临颍县| 新和县| 于都县| 依安县| 岑溪市| 四会市| 天气| 淳化县| 鹤壁市| 临颍县| 古交市| 刚察县| 邵东县| 黄龙县|