Un equivalente di javax.nio.Buffer.flip () in c #
Domanda
Sto eseguendo il porting di parte del codice java e devo essere in grado di capovolgere ( javax.nio.Buffer.flip ()
).
Sto usando byte [] per archiviare i dati e voglio capovolgere questi array di byte, proprio come fa Buffer, poiché credo che anche la classe Buffer utilizzi byte [].
Grazie
Soluzione
ByteBuffer
può utilizzare un byte []
(creare, per esempio, ByteBuffer.wrap
) o memoria heap non Java (creata con ByteBuffer.allocateDirect
). Puoi ottenere il byte []
sottostante con ByteBuffer.array
. Ma chiamare capovolgi
e metodi simili sui buffer non chnage i dati effettivi. Invece gli offset associati ai dati vengono modificati. Quindi l'equivalente con byte
sarebbe cambiare gli offset che il tuo codice vi sta associando.
Altri suggerimenti
Non esiste un equivalente diretto del pacchetto java.nio
in .NET. L'IO asincrono di solito viene gestito con Stream.BeginRead
/ EndRead
, ma non è proprio lo stesso modello. Potresti dirci cosa stai cercando di fare?
EDIT: ora hai fornito i dettagli di basso livello di ciò che stai cercando di fare, ma poiché non esiste un vero equivalente per le classi nio
in .NET, o devi scriverli da soli (non impossibile, ma una seccatura) o usare un diverso tipo di livello superiore. Ad esempio, potresti essere in grado di utilizzare MemoryStream
: scrivici, quindi cerca di nuovo all'inizio. È un bit come lanciare un buffer di byte. Tuttavia, non possiamo dire se sia appropriato o meno senza ulteriori informazioni sull'obiettivo di livello superiore. Potrebbe esserci un modo molto migliore per farlo.