2011-09-16 7 views
5

Ho una funzione che emette alcuni dati binari in un flusso. Ma lo stream è astratto, il che significa che lo stream può essere un flusso di file o altri flussi. Ma il flusso deve essere un flusso binario che supporta la funzione di byte di scrittura. Ho cercato ma non ho trovato la risposta.Come creare un flusso binario (non un file) in Common Lisp?

Quello che voglio fare è che ho una funzione che convertirà alcuni dati in una gif. Ma non voglio mandare i dati su un file, voglio farlo uscire su qualcosa in memoria.

Grazie.

risposta

3

La libreria flexi-streams fornisce, tra le altre cose, flussi binari in memoria.

+0

"Fornisce anche flussi binari in memoria che sono simili ai flussi di stringhe." Sembra che sia quello che voglio. Leggerò la documentazione per ulteriori informazioni. Grazie. –

+0

Grazie, con-output-to-sequence in flexi-stream risolve il mio problema. –

1

"File in memoria" - è solo un array di byte. Quindi tutto ciò di cui hai bisogno è leggere i tuoi dati dallo stream e scriverli in un array monodimensionale (vettore). Per ulteriori informazioni sugli array in CL vedere this.

+0

No, non è quello che voglio. Quello che voglio è scrivere alcuni dati in un array (o qualcos'altro). Ma la funzione 'scrivi' ha bisogno di un oggetto flusso. Grazie comunque. –

+0

@kevin lynx: Quindi qual è il problema per creare questa funzione? Leggi tutti i byte dallo stream ad un elenco e fornisci questo elenco come ': initial-contents' a' make-array'. – ffriend