2012-01-16 11 views
11

Sto convertendo il mio codice da Node.js al javascript del browser, ma ho un problema con i Buffer in node.js. Come posso usarli in Javascript?Converti nodejs 'Buffer in browser' javascript

Ecco un esempio:

new Buffer("foo", encoding='utf8') 
<Buffer 66 6f 6f> 

devo trasformare [66, 6f, 6f] in javascript per "foo" e viceversa. Come lo posso fare? NOTA: questo deve essere fatto senza Node.js.

risposta

0

Per riconvertire in stringa, utilizzare il metodo toString del buffer con una codifica fornita.

http://nodejs.org/docs/latest/api/buffers.html#buffer.toString

var buffer = new Buffer("foo", "utf8"); 
var str = buffer.toString("utf8"); 
str === "foo"; 
+0

No, no, ho bisogno di un'alternativa a Buffer(). Grazie comunque :) Ho bisogno di eseguirlo in javascript dei browser. – Fermuch

+1

Nota che se il 'Buffer' termina con una sequenza UTF-8 incompleta che' toString() 'non è sufficiente, finirai con un ultimo carattere spezzato. (Questo può accadere se si utilizza il buffer per leggere in un flusso con contenuto di testo sconosciuto.) In questo caso la soluzione è usare invece ['StringDecoder'] (http://nodejs.org/api/string_decoder.html) – hippietrail

+0

Bumping +1, questa era un'informazione utile per me in Node. – JohnnyCoder

5

Non c'è supporto diretto per Buffer browser basato su JavaScript, e io non sono a conoscenza di qualsiasi libreria di compatibilità che implementa l'API Buffer (ancora).

La funzionalità equivalente nel browser è fornita da TypedArrays. È possibile conoscere loro qui:

Quando il porting un'implementazione Nodo Buffer-based per basata su browser JavaScript, ho trovato queste risposte utili:

+1

Esiste ora una libreria di compatibilità [browser 'Buffer'] (http://stackoverflow.com/a/12486045/201952). – josh3736