ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js バッファー モジュールのいくつかの重要なメソッドについて話しましょう

Node.js バッファー モジュールのいくつかの重要なメソッドについて話しましょう

青灯夜游
青灯夜游転載
2022-01-05 19:03:241546ブラウズ

この記事では、Node.js バッファーの完全なガイドを共有し、Node バッファー (Buffer) モジュールのいくつかの重要なメソッドについて説明します。皆様のお役に立てれば幸いです。

Node.js バッファー モジュールのいくつかの重要なメソッドについて話しましょう

バイナリ ストリームは、バイナリ データの大規模なコレクションです。バイナリ ストリームのサイズは通常非常に大きいため、バイナリ ストリームは通常一緒に発送されず、発送前に小さなチャンクに分割され、1 つずつ送信されます。

データ処理ユニットが他のデータ ストリームの受信を一時的に停止すると、データ処理ユニットがさらにデータを受信できるようになるまで、残りのデータがキャッシュに保持されます。

Node.js サーバーは通常、ファイル システムでの読み取りと書き込みを行う必要があり、ファイルは実際にはストレージ レベルのバイナリ ストリームです。さらに、Node.js は TCP ストリームでも使用できるため、TCP ストリームで信頼性の高いエンドツーエンドのバイト ストリームを提供し、信頼性の低いインターネット ネットワーク上での通信を確保できます。

受信機に送信されたデータ ストリームは、受信機が処理するデータをさらに受信する準備ができるまでバッファリングされます。これは、Node.js の一時データ部分が行うこと、つまり V8 エンジンの外部でバイナリ データを管理および保存することです。

バッファー (Buffer) を使用するさまざまな方法を詳しく見ていき、バッファーについてさらに学び、Node.js プログラムでバッファーを使用する方法を学びましょう。

Node.js バッファー モジュールのいくつかの重要なメソッドについて話しましょう

Node.js バッファ メソッド

Node.js バッファ モジュールの最大の利点は、Node.js に組み込まれていることです。使いたい場所ならどこでも使えます。

いくつかの重要な Node.js バッファー モジュール メソッドを見てみましょう。

Buffer.alloc()

このメソッドは新しいバッファを作成しますが、割り当てられるサイズは固定されていません。このメソッドを呼び出すと、サイズ (バイト単位) を自分で割り当てることができます。

const buf = Buffer.alloc(6)  // 这会创建一个 6 字节的缓冲区

console.log(buf) // <Buffer 00 00 00 00 00 00>

Buffer.byteLength()

バッファの長さを取得したい場合は、Buffer.byteLength を呼び出すだけです。 ()### します。

var buf = Buffer.alloc(10)
var buffLen = Buffer.byteLength(buf) // 检查缓冲区长度

console.log(buffLen) // 10

Buffer.compare()

Buffer.compare() を使用すると、2 つのバッファを比較できます。このメソッドの戻り値は、-101 のいずれかです。

翻訳者注:

buf.compare(otherBuffer); この呼び出しは数値 -10 1# を返します。 ##、otherBuffer の前、後、または同じ buf に対応します。 <pre class="brush:js;toolbar:false;">var buf1 = Buffer.from(&amp;#39;Harsh&amp;#39;) var buf2 = Buffer.from(&amp;#39;Harsg&amp;#39;) var a = Buffer.compare(buf1, buf2) console.log(a) // 这会打印 0 var buf1 = Buffer.from(&amp;#39;a&amp;#39;) var buf2 = Buffer.from(&amp;#39;b&amp;#39;) var a = Buffer.compare(buf1, buf2) console.log(a) // 这会打印 -1 var buf1 = Buffer.from(&amp;#39;b&amp;#39;) var buf2 = Buffer.from(&amp;#39;a&amp;#39;) var a = Buffer.compare(buf1, buf2) console.log(a) // 这会打印 1</pre>

Buffer.concat() 名前が示すように、この関数を使用して 2 つのバッファを連結できます。もちろん、文字列と同じように、3 つ以上のバッファを連結することもできます。

var buffer1 = Buffer.from(&#39;x&#39;)
var buffer2 = Buffer.from(&#39;y&#39;)
var buffer3 = Buffer.from(&#39;z&#39;)
var arr = [buffer1, buffer2, buffer3]

console.log(arr)
/* buffer, !concat [ <Buffer 78>, <Buffer 79>, <Buffer 7a> ] */

// 通过 Buffer.concat 方法连接两个缓冲区
var buf = Buffer.concat(arr)

console.log(buf)
// <Buffer 78 79 7a> concat successful

Buffer.entries()##Buffer.entries()

は、このバッファの内容を使用して作成されます。 [インデックス, バイト] 形式の反復子を返します。

var buf = Buffer.from(&#39;xyz&#39;)

for (a of buf.entries()) {
    console.log(a)
    /* 这个会在控制台输出一个有缓冲区位置与内容的字节的数组 [ 0, 120 ][ 1, 121 ][ 2, 122 ] */
}

Buffer.fill()

Buffer.fill()

を使用できます。この関数はデータを または に挿入します。バッファを埋めます。詳細については、以下を参照してください。

const b = Buffer.alloc(10).fill(&#39;a&#39;)

console.log(b.toString())
// aaaaaaaaaa

Buffer.includes()

文字列と同様に、バッファに値があるかどうかを確認します。これは、Buffer.includes()

メソッドを使用して実現できます。指定されたメソッドは、検索に基づいてブール値 (

true または false) を返します。

const buf = Buffer.from(&#39;this is a buffer&#39;)
console.log(buf.includes(&#39;this&#39;))
// true

console.log(buf.includes(Buffer.from(&#39;a buffer example&#39;)))
// false

Buffer.isEncoding()

バイナリ ファイルはエンコードする必要があることがわかっているので、データ型かどうかを確認したい場合は、文字エンコーディングをサポートしていますが、それについて何ができるでしょうか? Buffer.isEncoding()

メソッドを使用して確認できます。サポートされている場合は、

true が返されます。

console.log(Buffer.isEncoding(&#39;hex&#39;))
// true

console.log(Buffer.isEncoding(&#39;utf-8&#39;))
// true

console.log(Buffer.isEncoding(&#39;utf/8&#39;))
// false

console.log(Buffer.isEncoding(&#39;hey&#39;))
// false

Buffer.slice()

buf.slice()

は、バッファ要素は新しいバッファを作成します - バッファがスライスされると、新しいバッファ スライス内で見つかる項目のリストを含む新しいバッファが作成されます。

var a = Buffer.from(&#39;uvwxyz&#39;);
var b = a.slice(2, 5);

console.log(b.toString());
// wxy

Buffer.swapX()

Buffer.swapX()

バッファの交換に使用されるバイト順序。

Buffer.swapX() (X は 16、32、64) を使用して、16 ビット、32 ビット、および 64 ビットのバッファー オブジェクトのバイト順序を交換します。

const buf1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8])
console.log(buf1)
// <Buffer 01 02 03 04 05 06 07 08>

// 交换 16 位字节顺序
buf1.swap16()
console.log(buf1)
// <Buffer 02 01 04 03 06 05 08 07>

// 交换 32 位字节顺序
buf1.swap32()
console.log(buf1)
// <Buffer 03 04 01 02 07 08 05 06>

// 交换 64 位字节顺序
buf1.swap64()
console.log(buf1)
// <Buffer 06 05 08 07 02 01 04 03>

Buffer.json()

バッファから JSON オブジェクトを作成するのに役立ち、このメソッドは JSON バッファを返します。物体 、###

const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);

console.log(buf.toJSON());
// {"type":"Buffer", data:[1, 2, 3, 4, 5, 6, 7, 8]}

结论

如果我们需要进一步了解并使用 Node.js 的缓冲区,我们需要对缓冲区以及 Node.js 缓冲区的工作原理有更扎实的基础知识。我们还应该了解为什么我们需要使用 Node.js 缓冲区和各种 Node.js 缓冲区方法的使用。

更多node相关知识,请访问:nodejs 教程!!

以上がNode.js バッファー モジュールのいくつかの重要なメソッドについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。