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

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

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

一、前傳

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

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

var jsonStr='{"name":"cuiyanwei","sex":"男","blog":"http://www.cnblogs.com/5ishare/"}';
//json轉(zhuǎn)js對(duì)象
var jsObj=JSON.parse(jsonStr);
console.log(jsObj);
//js對(duì)象轉(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ù)是由一系列大端或小端(這個(gè)要百度)格式字節(jié)組成,比文本數(shù)據(jù)占用較小空間.Buffer模塊是全局的,不需要使用require()來(lái)訪問(wèn)它。

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

2.使用

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

1).創(chuàng)建

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

//    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).寫(xiě)(方法好多)

var buf256=new Buffer(25);
//fill(value,[offset],[end]) 將value寫(xiě)到緩沖區(qū)從offset索引(默認(rèn)0)處開(kāi)始,并在end索引處結(jié)束的每個(gè)字節(jié)(默認(rèn)buffer長(zhǎng)度)
buf256.fill("1",0);
console.log(buf256.toString());
//wirte(string,[offset],[length],[encoding]) 使用encoding編碼從緩沖區(qū)offset索引開(kāi)始寫(xiě)入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).讀(可逆,有寫(xiě)就有讀)

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é)的八進(jìn)制值
console.log(bufUTF8[8].toString(16));
//Node.js提供StringDecoder對(duì)象,有一個(gè)write(buffer)來(lái)進(jìn)行解碼,并使用指定的編碼寫(xiě)入緩沖區(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長(zhǎng)度

Buffer的長(zhǎng)度是計(jì)算的字節(jié)長(zhǎng)度,字符串的長(zhǎng)度是字符的長(zhǎng)度.

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.對(duì)緩沖區(qū)切片

這個(gè)有點(diǎn)類似字符串截取.slice([start],[end]),返回一個(gè)Buffer對(duì)象.如果編輯一個(gè)切片也會(huì)改變?cè)瓉?lái)的緩沖區(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ū)

這個(gè)有點(diǎn)類似C中的字符串拼接.concat(list,[totalLength])可以把多個(gè)Buffer對(duì)象拼接在一起形成一個(gè)新的緩沖區(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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • nodejs讀取圖片返回給瀏覽器顯示

    nodejs讀取圖片返回給瀏覽器顯示

    這篇文章主要為大家詳細(xì)介紹了nodejs讀取圖片返回給瀏覽器顯示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • npm安裝的全局包/工具不能使用,不是內(nèi)部/外部命令的解決方法

    npm安裝的全局包/工具不能使用,不是內(nèi)部/外部命令的解決方法

    這篇文章主要給大家介紹了關(guān)于npm安裝的全局包/工具不能使用,不是內(nèi)部/外部命令的解決方法,文中通過(guò)圖文將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Node.js中文件系統(tǒng)fs模塊的使用及常用接口

    Node.js中文件系統(tǒng)fs模塊的使用及常用接口

    fs是filesystem的縮寫(xiě),該模塊提供本地文件的讀寫(xiě)能力,基本上是POSIX文件操作命令的簡(jiǎn)單包裝。這篇文章主要介紹了Node.js中的文件系統(tǒng)fs模塊的使用,需要的朋友可以參考下
    2020-03-03
  • Node Sass依賴問(wèn)題排查思路解析

    Node Sass依賴問(wèn)題排查思路解析

    這篇文章主要為大家介紹了Node Sass依賴問(wèn)題排查思路解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • window10系統(tǒng)下nvm詳細(xì)安裝步驟以及使用

    window10系統(tǒng)下nvm詳細(xì)安裝步驟以及使用

    nvm可以管理不同版本的node和npm,可以簡(jiǎn)單操作node版本的切換、安裝、查看等,下面這篇文章主要給大家介紹了關(guān)于window10系統(tǒng)下nvm詳細(xì)安裝步驟以及使用的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • node.js中的fs.chown方法使用說(shuō)明

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

    這篇文章主要介紹了node.js中的fs.chown方法使用說(shuō)明,本文介紹了fs.chown的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • nodejs配置express服務(wù)器運(yùn)行自動(dòng)打開(kāi)瀏覽器詳細(xì)步驟

    nodejs配置express服務(wù)器運(yùn)行自動(dòng)打開(kāi)瀏覽器詳細(xì)步驟

    在nodejs中使用express來(lái)搭建框架可以說(shuō)是非常的簡(jiǎn)單方便,下面這篇文章主要給大家介紹了關(guān)于nodejs配置express服務(wù)器運(yùn)行自動(dòng)打開(kāi)瀏覽器的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Node的文件系統(tǒng)你了解多少

    Node的文件系統(tǒng)你了解多少

    這篇文章主要為大家詳細(xì)介紹了Node的文件系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 從零學(xué)習(xí)node.js之模塊規(guī)范(一)

    從零學(xué)習(xí)node.js之模塊規(guī)范(一)

    Node.js是一個(gè)基于谷歌瀏覽器JavaScript執(zhí)行環(huán)境建立的一個(gè)平臺(tái),讓JavaScript可以脫離客戶端瀏覽器運(yùn)行,讓 JavaScript具有服務(wù)器語(yǔ)言的能力。從本文開(kāi)始我們進(jìn)行學(xué)習(xí)node.js,這篇文章主要介紹的是node.js中模塊規(guī)范的相關(guān)資料,需要的朋友可以參考下。
    2017-02-02
  • node.js中的buffer.Buffer.isEncoding方法使用說(shuō)明

    node.js中的buffer.Buffer.isEncoding方法使用說(shuō)明

    這篇文章主要介紹了node.js中的buffer.Buffer.isEncoding方法使用說(shuō)明,本文介紹了buffer.Buffer.isEncoding的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12

最新評(píng)論