node js(五)
2818 ワード
Bufferバッファローの紹介 JavaScript言語には、バイナリデータストリームの読み取りまたは操作のための機構がありません. Buffer.alloc によって作成されたバッファは初期化されています.すべての項目は に00で充填されます.例: Buffer.alloc Unisafe によって作成されたBufferは初期化されていません.メモリに空きがあればそのまま「捕まえて」 を使用します.例: Buffer.allocUnisafeはバッファerを作成し、メモリの割り当てが非常に速いが、割り当てられたメモリセグメントは潜在的な敏感なデータを含む可能性があり、明らかな性能優勢があると同時に、安全ではないので、注意して使用する必要があります. Buffer.from は、3つの方法をサポートしています. の第一パラメータは文字列であり、第二パラメータは文字コードであり、 は1つの配列に入ってきました.配列の各項目は16進数でバッファerの各項目として保存されます. は、Bufferの各アイテムを新たにBufferに返すために導入されます. 例: は、NodeJSでは 例: から入力された配列のメンバは、任意の進数の値であってもよく、メンバが文字列である場合、値が数値である場合、自動的に数値タイプと識別され、値が数字でない場合、またはメンバーが他の非数値タイプのデータである場合、メンバは である.がバッファローに伝えられました. 例: は、入ってきたパラメータがバッファーであるとき、新しいバッファーを作成し、上の各メンバを複製する. Bufferは参照タイプであり、Bufferは別のBufferのメンバーをコピーしています.Buffer複製のメンバーが変更されると、他のBuffer対応のメンバーは同じ参照を指すので、「二次元配列」に似ています. 例:
Buffer
クラスは、Node.js APIの一部として導入されたものであり、TCP(接続向け、信頼性の高い、バイトベースのトランスポート層通信プロトコル)ストリーム、ファイルシステム動作、および他のコンテキストで8ビットのバイトストリームと相互作用するために使用され、または、2進データストリームを処理するために理解され得る.let buf1 = Buffer.alloc(6);
// 6
console.log(buf1);
//
let buf2 = Buffer.allocUnsafe(6);
// 6
console.log(buf2);
//
ASCII
、UTF-8
、Base64
などである.//
let buf = Buffer.from("hello", "utf8");
console.log(buf); //
//
//
let buf = Buffer.from([1, 2, 3]);
console.log(buf); //
//
let buf = Buffer.from([0xe4, 0xbd, 0xa0, 0xe5, 0xa5, 0xbd]);
console.log(buf); //
console.log(buf.toString("utf8")); //
GB2312
コードに対応していません.デフォルトはUTF-8
をサポートしています.GB2312
では漢字1文字が2バイトを占めています.一方、UTF-8
では漢字1文字が3バイトを占めていますので、上の「こんにちは」のBufferは6
個の16進数で構成されています.//
let buf = Buffer.from(["1", "2", "3"]);
console.log(buf); //
00
に初期化される.作成されたBufferは、toString
方式で符号化を直接指定して変換することができ、デフォルトの符号化はUTF-8
// Buffer
let buf1 = Buffer.from("hello", "utf8");
let buf2 = Buffer.from(buf1);
console.log(buf1); //
console.log(buf2); //
console.log(buf1 === buf2); // true
console.log(buf1[0] === buf2[0]); // false
// Buffer
let arr1 = [1, 2, [3]];
let arr2 = arr1.slice();
arr2[2][0] = 5;
console.log(arr1); // [1, 2, [5]]