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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top