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

Node.js處理I/O數(shù)據(jù)之使用Buffer模塊緩沖數(shù)據(jù)

 更新時間:2022年07月06日 08:18:57   作者:社會主義接班人  
這篇文章介紹了Node.js使用Buffer模塊緩沖數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、前傳

在之前做web時也經(jīng)常用到j(luò)s對象轉(zhuǎn)json和json轉(zhuǎn)js對象.既然是Node.js處理I/O數(shù)據(jù),也把這個記下來。

Json轉(zhuǎn)Js對象:JSON.parse(jsonstr); //可以將json字符串轉(zhuǎn)換成json對象
Js對象轉(zhuǎn)Json:JSON.stringify(jsonobj); //可以將json對象轉(zhuǎn)換成json對符串

var jsonStr='{"name":"cuiyanwei","sex":"男","blog":"http://www.cnblogs.com/5ishare/"}';
//json轉(zhuǎn)js對象
var jsObj=JSON.parse(jsonStr);
console.log(jsObj);
//js對象轉(zhuǎn)Json
var newJsonStr=JSON.stringify(jsObj);
console.log(newJsonStr);

輸出結(jié)果:

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Buffer.js
{ name: 'cuiyanwei',
  sex: '男',
  blog: 'http://www.cnblogs.com/5ishare/' }
{"name":"cuiyanwei","sex":"男","blog":"http://www.cnblogs.com/5ishare/"}

Process finished with exit code 0

二、Buffer模塊緩沖數(shù)據(jù)

1.介紹

緩沖數(shù)據(jù)是由一系列大端或小端(這個要百度)格式字節(jié)組成,比文本數(shù)據(jù)占用較小空間.Buffer模塊是全局的,不需要使用require()來訪問它。

緩沖數(shù)據(jù)被存儲在類似數(shù)組的結(jié)構(gòu)中,但被存儲在正常V8堆內(nèi)存之外的原始內(nèi)存分配區(qū)中,因此不能調(diào)整大小.

2.使用

在介紹中說緩沖數(shù)據(jù)被存儲在類似數(shù)組的結(jié)構(gòu)中,基本和數(shù)組的操作差不多:創(chuàng)建對象、讀、寫、分割、拷貝、合并等。

1).創(chuàng)建

Buffer對象是在原始的內(nèi)存分配區(qū),在創(chuàng)建的時候確定大小。

//    1.字節(jié)大小 2.八位字節(jié)緩沖區(qū) 3.UTF8字符串
var  buffer256=new  Buffer(256);
var  bufferOctets=new Buffer([0x6f,0x63,0x74,0x65,0x74,0x73]);
var bufferUTF8=new  Buffer("Some UTF8 Text",'utf8');

2).寫(方法好多)

var buf256=new Buffer(25);
//fill(value,[offset],[end]) 將value寫到緩沖區(qū)從offset索引(默認0)處開始,并在end索引處結(jié)束的每個字節(jié)(默認buffer長度)
buf256.fill("1",0);
console.log(buf256.toString());
//wirte(string,[offset],[length],[encoding]) 使用encoding編碼從緩沖區(qū)offset索引開始寫入string中l(wèi)ength數(shù)量的字節(jié)
buf256.write("abc",1,2,'utf8');
console.log(buf256.toString());
buf256[6]=56;//將索引處的數(shù)據(jù)替換為指定的value值
console.log(buf256.toString());

輸出結(jié)果:

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Buffer.js
1111111111111111111111111
1ab1111111111111111111111
1ab1118111111111111111111

Process finished with exit code 0

3).讀(可逆,有寫就有讀)

var bufUTF8=new  Buffer("Some UTF8 Text",'utf8');
console.log(bufUTF8.toString());
//toString([encoding],[start],[end]) 使用encoding編碼,讀取從start(0)到end(尾)
console.log(bufUTF8.toString('utf8',0,4));
//返回緩沖區(qū)在指定offset字節(jié)的八進制值
console.log(bufUTF8[8].toString(16));
//Node.js提供StringDecoder對象,有一個write(buffer)來進行解碼,并使用指定的編碼寫入緩沖區(qū)數(shù)據(jù)
var StringDecoder=require('string_decoder').StringDecoder;
var decoder=new StringDecoder('utf8');
console.log(decoder.write(bufUTF8));

輸出結(jié)果:

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Buffer.js
Some UTF8 Text
Some
38
Some UTF8 Text

Process finished with exit code 0

4.Buffer長度

Buffer的長度是計算的字節(jié)長度,字符串的長度是字符的長度.

var s='UTF8 text \u00b6';
console.log(s.length);
console.log(Buffer.byteLength(s,'utf8'));
console.log(Buffer(s).length)

輸出結(jié)果:

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Buffer.js
11
12
12

Process finished with exit code 0

5.復(fù)制緩沖區(qū) 主要是copy方法

var bufSource=new  Buffer("1234567890",'utf8');
var bufTarget=new  Buffer("abcedfghijklmn",'utf8');
//copy.(targetBuffer, targetStart, sourceStart, sourceEnd)
//bufSource.copy(bufTarget,10,3,9); //abcedfghij4567
bufSource.copy(bufTarget,0,3,9);//456789ghijklmn
console.log(bufTarget.toString());

6.對緩沖區(qū)切片

這個有點類似字符串截取.slice([start],[end]),返回一個Buffer對象.如果編輯一個切片也會改變原來的緩沖區(qū)。

var  number=new Buffer('123456789');
console.log(number.toString());
var slice=number.slice(3.9);
console.log(slice.toString());
slice[0]='#'.charCodeAt(0);
slice[slice.length-1]='#'.charCodeAt(0);
console.log(slice.toString());
console.log(number.toString());

輸出結(jié)果:

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Buffer.js
123456789
456789
#5678#
123#5678#

Process finished with exit code 0

7.拼接緩沖區(qū)

這個有點類似C中的字符串拼接.concat(list,[totalLength])可以把多個Buffer對象拼接在一起形成一個新的緩沖區(qū).

var buff1 = new Buffer("123");
var buff2 = new Buffer("abc");
console.log(Buffer.concat([buff1, buff2,buff1]).toString());

輸出結(jié)果:

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe buffer_concat.js
123abc123

Process finished with exit code 0

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • npm安裝時的錯誤排查的方法

    npm安裝時的錯誤排查的方法

    在我們的日常工作中,使用npm來安裝依賴是非常常見的,然而,有時候安裝過程中會遇到各種各樣的報錯,本文主要介紹了npm安裝時的錯誤排查的方法,感興趣的可以了解一下
    2024-08-08
  • 解決npm?install版本不匹配問題:?npm?ERR!?code?ETARGET?npm?ERR!?notarget?No?matching?version?found?for

    解決npm?install版本不匹配問題:?npm?ERR!?code?ETARGET?npm?ERR!?

    這篇文章主要介紹了如何解決npm?install版本不匹配問題:?npm?ERR!?code?ETARGET?npm?ERR!?notarget?No?matching?version?found?for,文中給出了詳細的解決方法,需要的朋友可以參考下
    2024-02-02
  • Node實現(xiàn)前端本地開發(fā)接口代理服務(wù)

    Node實現(xiàn)前端本地開發(fā)接口代理服務(wù)

    本文主要介紹了Node實現(xiàn)前端本地開發(fā)接口代理服務(wù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • Nodejs做文本數(shù)據(jù)處理實現(xiàn)詳解

    Nodejs做文本數(shù)據(jù)處理實現(xiàn)詳解

    這篇文章主要為大家介紹了Nodejs做文本數(shù)據(jù)處理實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Node.js中使用Buffer編碼、解碼二進制數(shù)據(jù)詳解

    Node.js中使用Buffer編碼、解碼二進制數(shù)據(jù)詳解

    這篇文章主要介紹了Node.js中使用Buffer編碼、解碼二進制數(shù)據(jù)詳解,Buffer支持ascii、utf8、ucs2、base64等編碼格式,需要的朋友可以參考下
    2014-08-08
  • NodeJs生成sitemap站點地圖的方法示例

    NodeJs生成sitemap站點地圖的方法示例

    這篇文章主要介紹了NodeJs生成sitemap站點地圖的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • nodejs簡單實現(xiàn)TCP服務(wù)器端和客戶端的聊天功能示例

    nodejs簡單實現(xiàn)TCP服務(wù)器端和客戶端的聊天功能示例

    這篇文章主要介紹了nodejs簡單實現(xiàn)TCP服務(wù)器端和客戶端的聊天功能,結(jié)合實例形式分析了nodejs基于TCP協(xié)議實現(xiàn)的聊天程序客戶端與服務(wù)器端具體步驟與相關(guān)操作技巧,代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下
    2018-01-01
  • Node.js之如何構(gòu)建UDP服務(wù)

    Node.js之如何構(gòu)建UDP服務(wù)

    這篇文章主要介紹了Node.js之如何構(gòu)建UDP服務(wù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • node.js中的buffer.Buffer.isBuffer方法使用說明

    node.js中的buffer.Buffer.isBuffer方法使用說明

    這篇文章主要介紹了node.js中的buffer.Buffer.isBuffer方法使用說明,本文介紹了buffer.Buffer.isBuffer的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 如何利用node實現(xiàn)靜態(tài)文件緩存詳解

    如何利用node實現(xiàn)靜態(tài)文件緩存詳解

    HTTP 緩存機制作為 Web 應(yīng)用性能優(yōu)化的重要手段,對于從事 Web 開發(fā)的同學們來說,應(yīng)該是知識體系的基礎(chǔ)環(huán)節(jié),也是想要成為前端架構(gòu)的必備技能,這篇文章主要給大家介紹了關(guān)于如何利用node實現(xiàn)靜態(tài)文件緩存的相關(guān)資料,需要的朋友可以參考下
    2021-07-07

最新評論

陆川县| 于都县| 绿春县| 平舆县| 泾源县| 宿松县| 光山县| 鹤壁市| 台南市| 农安县| 库伦旗| 静海县| 离岛区| 邢台市| 正宁县| 石嘴山市| 武乡县| 西城区| 滦南县| 江阴市| 南宫市| 康乐县| 丰顺县| 涟水县| 英山县| 鄂尔多斯市| 揭阳市| 垦利县| 桦甸市| 长寿区| 乌兰察布市| 河北省| 南丰县| 敦煌市| 常德市| 阿荣旗| 平南县| 福州市| 望都县| 桃源县| 葵青区|