Latest web development tutorials

Node.js tampone (buffer)

JavaScript linguaggio stesso solo i tipi di dati stringa, nessun tipo di dati binari.

Ma quando si tratta di corsi d'acqua come flusso TCP o un file, è necessario utilizzare i dati binari. Pertanto, in Node.js, la definizione di una classe buffer utilizzato per creare un buffer di memorizzazione specializzata dati binari.

Nei Node.js, classe Buffer viene rilasciato insieme alla libreria di base del kernel nodo. biblioteca Buffer Node.js porta un metodo di memorizzazione di dati grezzi permette Node.js gestire dati binari, ogni volta che è necessario gestire operazioni di I / O per spostare i dati Node.js quando è possibile utilizzare libreria Buffer . I dati originali memorizzati nella classe Buffer istanza. A Buffer è simile a un array di interi, ma corrisponde a una memoria prime al di fuori del mucchio V8.


Crea classe Buffer

classe Node Buffer può essere creato in diversi modi.

metodo 1

Creare esempio una lunghezza di 10 byte del buffer:

var buf = new Buffer(10);

metodo 2

Attraverso un dato creazione dell'array buffer Esempio:

var buf = new Buffer([10, 20, 30, 40, 50]);

metodo 3

Creare esempio buffer da una stringa:

var buf = new Buffer("www.w3big.com", "utf-8");

utf-8 è la codifica di default, in aggiunta supporta anche i seguenti codifiche: "ascii", "utf8", "utf16le", "UCS2", "base64" e "hex".


Scrivi tampone

grammatica

sintassi Node buffer di scrittura è il seguente:

buf.write(string[, offset[, length]][, encoding])

parametri

I parametri sono descritti di seguito:

  • stringa - il buffer di stringa è scritto.

  • Offset - il buffer dell'indice per iniziare a scrivere, il valore predefinito è 0.

  • Lunghezza - il numero di byte scritti, per impostazione predefinita buffer.length

  • encoding - la codifica utilizzata.Il valore predefinito è 'utf8'.

Valore di ritorno

Restituisce la dimensione della scrittura. Se lo spazio di buffer, l'unica parte della stringa viene scritta.

Esempi

buf = new Buffer(256);
len = buf.write("www.w3big.com");

console.log("写入字节数 : "+  len);

L'attuazione del codice di cui sopra, l'output è:

$node main.js
写入字节数 : 14

Legge i dati dal buffer

grammatica

Nodo lettura sintassi dei dati di buffer è la seguente:

buf.toString([encoding[, start[, end]]])

parametri

I parametri sono descritti di seguito:

  • encoding - la codifica utilizzata.Il valore predefinito è 'utf8'.

  • inizio - iniziare la lettura posizione di indice specificata, il valore predefinito è 0.

  • end - la posizione finale, il default è la fine del buffer.

Valore di ritorno

Decodifica i dati di buffer e restituisce una stringa utilizzando la codifica specificata.

Esempi

buf = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
  buf[i] = i + 97;
}

console.log( buf.toString('ascii'));       // 输出: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5));   // 输出: abcde
console.log( buf.toString('utf8',0,5));    // 输出: abcde
console.log( buf.toString(undefined,0,5)); // 使用 'utf8' 编码, 并输出: abcde

L'attuazione del codice di cui sopra, l'output è:

$ node main.js
abcdefghijklmnopqrstuvwxyz
abcde
abcde
abcde

Buffer verrà convertito in un oggetto JSON

grammatica

Il nodo del buffer in JSON sintassi della funzione oggetto è la seguente:

buf.toJSON()

Valore di ritorno

Restituisce oggetto JSON.

Esempi

var buf = new Buffer('www.w3big.com');
var json = buf.toJSON(buf);

console.log(json);

L'attuazione del codice di cui sopra, l'output è:

[ 119, 119, 119, 46, 114, 117, 110, 111, 111, 98, 46, 99, 111, 109 ]

Unisci Buffer

grammatica

Buffer Node sintassi combinato è la seguente:

Buffer.concat(list[, totalLength])

parametri

I parametri sono descritti di seguito:

  • Lista - un array di oggetti per Buffer elenco combinato.

  • totalLength - dopo una lunghezza totale combinato specificata dell'oggetto Buffer.

Valore di ritorno

Restituire più i membri di un oggetto unito nuovo buffer.

Esempi

var buffer1 = new Buffer('本教程 ');
var buffer2 = new Buffer('www.w3big.com');
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 内容: " + buffer3.toString());

L'attuazione del codice di cui sopra, l'output è:

buffer3 内容: 本教程 www.w3big.com

buffer di confronto

grammatica

Nodo Buffer confrontare sintassi della funzione è la seguente, il metodo introdotto nella versione v0.12.2 Node.js:

buf.compare(otherBuffer);

parametri

I parametri sono descritti di seguito:

  • otherBuffer - rispetto a BUFoggetti buffer per un altro oggetto.

Valore di ritorno

Esso restituisce un numero che rappresentabuf prima otherBuffer,o dopo la stessa.

Esempi

var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);

if(result < 0) {
   console.log(buffer1 + " 在 " + buffer2 + "之前");
}else if(result == 0){
   console.log(buffer1 + " 与 " + buffer2 + "相同");
}else {
   console.log(buffer1 + " 在 " + buffer2 + "之后");
}

L'attuazione del codice di cui sopra, l'output è:

ABC在ABCD之前

Copia del buffer

grammatica

sintassi tampone Node copia è il seguente:

buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])

parametri

I parametri sono descritti di seguito:

  • targetBuffer - Buffer gli oggetti che si desidera copiare.

  • targetStart - digitale, opzionale, default: 0

  • sourceStart - digitale, opzionale, default: 0

  • sourceEnd - digitale, opzionale, default: buffer.length

Valore di ritorno

Nessun valore di ritorno.

Esempi

var buffer1 = new Buffer('ABC');
// 拷贝一个缓冲区
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log("buffer2 content: " + buffer2.toString());

L'attuazione del codice di cui sopra, l'output è:

buffer2 content: ABC

Buffer crop

sintassi tampone Node raccolto è la seguente:

buf.slice([start[, end]])

parametri

I parametri sono descritti di seguito:

  • iniziare - numeri, opzionale, default: 0

  • fine - digitale, opzionale, default: buffer.length

Valore di ritorno

Restituisce un nuovo buffer, è vecchio e scegliere lo stesso pezzo di buffer di memoria, ma inizia dall'indice alla posizione dell'estremità tagliata.

Esempi

var buffer1 = new Buffer('w3big');
// 剪切缓冲区
var buffer2 = buffer1.slice(0,2);
console.log("buffer2 content: " + buffer2.toString());

L'attuazione del codice di cui sopra, l'output è:

buffer2 content: ru

lunghezza del buffer

grammatica

Buffer Node sintassi calcolo della lunghezza è la seguente:

buf.length;

Valore di ritorno

Eseguire la memoria buffer occupato dalla lunghezza dell'oggetto.

Esempi

var buffer = new Buffer('www.w3big.com');
//  缓冲区长度
console.log("buffer length: " + buffer.length);

L'attuazione del codice di cui sopra, l'output è:

buffer length: 14

Manuale Metodo di riferimento

In seguito è un modulo lista Node.js Buffer metodo comunemente usato (Si noti che alcuni metodi della vecchia versione non è):

No. Metodo & descrizione
1 nuovo buffer (dimensione)
Assegnare una nuova dimensione per la dimensione del buffer di byte di unità 8. Si noti, la dimensione deve essere inferiore a kMaxLength, in caso contrario, sarà un'eccezione RangeError.
2 nuovo buffer (buffer)
Copiare i dati dei parametri per l'istanza del buffer di buffer.
3 nuovo buffer (str [, encoding] )
Si alloca un nuovo buffer, che contiene la stringa passata str. la codifica di default codifica a 'utf8'.
4 buf.length
Restituisce il numero di byte nel buffer. Si noti che questo non è necessariamente la dimensione del buffer all'interno del contenuto. buffer di lunghezza è la quantità di memoria allocata dall'oggetto, non cambia il buffer con il contenuto delle modifiche di oggetto.
5 buf.write (string [, offset [, lunghezza]] [, encoding])
Secondo i parametri di offset e di offset specificati codifica codifica, scrive i dati stringa di parametri buffer. Offset Offset Il valore di default è 0, che codifica per la codifica di default è utf8. formato lunghezza Lunghezza byte da scrivere stringa. Restituisce il tipo di numero, scrivere il numero otto rappresenta il flusso di byte. Se il buffer non è sufficiente spazio per mettere l'intera stringa, verrà scritto solo solo una parte della stringa. La lunghezza predefinita è buffer.length - offset. Questo metodo per scrivere non compaiono alcuni caratteri.
6 buf.writeUIntLE (valore, offset, ByteLength [ , noAssert])
Il valore viene scritto nel buffer dove viene determinato dal offset e ByteLength, il supporto 48-bit, per esempio:
var b = new Buffer(6);
b.writeUIntBE(0x1234567890ab, 0, 6);
// <Buffer 12 34 56 78 90 ab>
noAssert quando il valore è vero, verificare non è più la validità e il valore dell'offset. Il valore predefinito è falso.
7 buf.writeUIntBE (valore, offset, ByteLength [ , noAssert])
Il valore viene scritto nel buffer in cui si è determinata dal offset e ByteLength, supporto 48-bit. noAssert quando il valore è vero, verificare non è più la validità e il valore dell'offset. Il valore predefinito è falso.
8 buf.writeIntLE (valore, offset, ByteLength [ , noAssert])
Il valore viene scritto nel buffer in cui si è determinata dal offset e ByteLength, supporto 48-bit. noAssert quando il valore è vero, verificare non è più la validità e il valore dell'offset. Il valore predefinito è falso.
9 buf.writeIntBE (valore, offset, ByteLength [ , noAssert])
Il valore viene scritto nel buffer in cui si è determinata dal offset e ByteLength, supporto 48-bit. noAssert quando il valore è vero, verificare non è più la validità e il valore dell'offset. Il valore predefinito è falso.
10 buf.readUIntLE (offset, ByteLength [, noAssert ])
Supporto lettura digitale 48 o meno. Quando noAssert è vero, nessun offset verificare più che supera la lunghezza del buffer, il valore predefinito è falso.
11 buf.readUIntBE (offset, ByteLength [, noAssert ])
Supporto lettura digitale 48 o meno. Quando noAssert è vero, nessun offset verificare più che supera la lunghezza del buffer, il valore predefinito è falso.
12 buf.readIntLE (offset, ByteLength [, noAssert ])
Supporto lettura digitale 48 o meno. Quando noAssert è vero, nessun offset verificare più che supera la lunghezza del buffer, il valore predefinito è falso.
13 buf.readIntBE (offset, ByteLength [, noAssert ])
Supporto lettura digitale 48 o meno. Quando noAssert è vero, nessun offset verificare più che supera la lunghezza del buffer, il valore predefinito è falso.
14 buf.toString ([encoding [, start [ , end]]])
(Il valore predefinito è 'utf8') restituisce una stringa di decodificato in base al tipo di parametri di codifica. Essa si baserà sui parametri passati di partenza (di default è 0) e fine (di default è buffer.length) come un intervallo di valori.
15 buf.toJSON ()
L'istanza del buffer in un oggetto JSON.
16 buf [index]
Ottiene o imposta i byte specificati. Il valore restituito rappresenta un byte, quindi la gamma legale del valore di ritorno è 0x00 a 0xFF esadecimale o decimale 0-255.
17 buf.equals (otherBuffer)
Confronta i due buffer sono uguali, e se ritorna vero, altrimenti restituisce FALSE.
18 buf.compare (otherBuffer)
Buffer confrontare due oggetti e restituisce un numero che rappresenta buf prima otherBuffer, o dopo la stessa.
19 buf.copy (targetBuffer [, targetStart [, sourceStart [, sourceEnd]]])
copia del buffer, l'origine e la destinazione possono essere uguali. targetStart target iniziale offset e sourceStart inizio fonte di offset di default è 0. sourceEnd posizione finale di origine viene compensato fonte lunghezza buffer.length predefinita.
20 buf.slice ([start [, end] ])
Tagliare gli oggetti Buffer, secondo l'avvio (di default è 0) e la fine (il valore predefinito è buffer.length) offset e indice di raccolto. indice negativo viene calcolato dall'inizio del buffer coda.
21 buf.readUInt8 (offset [, noAssert])
Secondo l'offset specificato Legge un numero intero a 8 bit con segno. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Se questo offset può essere oltre la fine del buffer. Il valore predefinito è falso.
22 buf.readUInt16LE (offset [, noAssert])
Secondo l'offset specificato utilizzando il formato speciale ordine dei byte endian Legge un segno a 16-bit integer. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
23 buf.readUInt16BE (offset [, noAssert])
Secondo l'offset specificato utilizzando il formato speciale ordine dei byte endian Legge un segno a 16-bit integer. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
24 buf.readUInt32LE (offset [, noAssert])
Secondo l'offset indicato con il formato ordine di byte endian specificato Legge un segno a 32-bit integer. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
25 buf.readUInt32BE (offset [, noAssert])
Secondo l'offset indicato con il formato ordine di byte endian specificato Legge un segno a 32-bit integer. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
26 buf.readInt8 (offset [, noAssert])
Secondo l'offset specificato, per leggere un segno a 8-bit integer. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
27 buf.readInt16LE (offset [, noAssert])
Secondo l'offset specificato utilizzando formato speciale endian Legge un segno a 16-bit integer. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
28 buf.readInt16BE (offset [, noAssert])
Secondo l'offset specificato utilizzando formato speciale endian Legge un segno a 16-bit integer. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
29 buf.readInt32LE (offset [, noAssert])
Secondo l'offset indicato con il formato ordine di byte endian specificato si legge in un segno a 32 bit integer. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
30 buf.readInt32BE (offset [, noAssert])
Secondo l'offset indicato con il formato ordine di byte endian specificato si legge in un segno a 32 bit integer. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
31 buf.readFloatLE (offset [, noAssert])
Secondo l'offset indicato con l'ordine endian byte specificato per leggere un formato a virgola mobile a 32-bit. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
32 buf.readFloatBE (offset [, noAssert])
Secondo l'offset indicato con l'ordine endian byte specificato per leggere un formato a virgola mobile a 32-bit. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
33 buf.readDoubleLE (offset [, noAssert])
Secondo l'offset indicato con il formato ordine dei byte endian specificato per leggere un doppio 64-bit. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
34 buf.readDoubleBE (offset [, noAssert])
Secondo l'offset indicato con il formato ordine dei byte endian specificato per leggere un doppio 64-bit. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che l'offset può essere oltre la fine del buffer. Il valore predefinito è falso.
35 buf.writeUInt8 (valore, offset [, noAssert ])
Secondo l'arrivo compensare il buffer di scrivere il valore di offset. Nota: il valore deve essere un intero con segno a 8 bit valido. Se il parametro è vero noAssert non convaliderà compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, non utilizzare. Il valore predefinito è falso.
36 buf.writeUInt16LE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: il valore deve essere un intero con segno a 16 bit valido. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
37 buf.writeUInt16BE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: il valore deve essere un intero con segno a 16 bit valido. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
38 buf.writeUInt32LE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: il valore deve essere un numero intero con segno a 32 bit valido. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
39 buf.writeUInt32BE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: il valore deve essere un numero intero con segno a 32 bit valido. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
40 buf.writeInt8 (valore, offset [, noAssert ])
41 buf.writeInt16LE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: il valore deve essere un intero con segno a 16 bit valido. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
42 buf.writeInt16BE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: il valore deve essere un intero con segno a 16 bit valido. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
43 buf.writeInt32LE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: il valore deve essere un intero con segno a 32 bit valido. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
44 buf.writeInt32BE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: il valore deve essere un intero con segno a 32 bit valido. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
45 buf.writeFloatLE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: Se il valore non è il valore di un tipo in virgola mobile a 32 bit, il risultato è indefinito. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
46 buf.writeFloatBE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: Se il valore non è il valore di un tipo in virgola mobile a 32 bit, il risultato è indefinito. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
47 buf.writeDoubleLE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: il valore deve essere un valore a 64 bit valido di tipo double. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
48 buf.writeDoubleBE (valore, offset [, noAssert ])
Secondo l'ingresso Offset offset e il buffer di scrittura valore di formato endian specificato. Nota: il valore deve essere un valore a 64 bit valido di tipo double. Se il parametro è noAssert vero valore non verrà convalidato e compensato parametri di correzione. Ciò significa che il valore può essere troppo grande, o offset può superare la fine del buffer del valore risultante viene scartato. A meno che non sei molto sicuro di questo parametro, o cercare di non utilizzare. Il valore predefinito è falso.
49 buf.fill (valore [, offset] [ , end])
Utilizzando il valore specificato per riempire il buffer. Se non compensata (il default è 0) e la fine (il valore predefinito è buffer.length), riempirà l'intero buffer.