Ein Äquivalent javax.nio.Buffer.flip () in C #
Frage
ich einen Teil des Java-Code bin Portierung und muß in der Lage sein, leicht zu schlagen (javax.nio.Buffer.flip()
).
I Byte bin mit [] Daten zu speichern, und ich mag Flip dieser Byte-Array, ähnlich wie Buffer es tut, wie ich unter Buffer-Klasse glaube verwendet byte [] als auch.
Danke
Lösung
ByteBuffer
kann eine byte[]
verwenden (Erstellen von, sagen wir, ByteBuffer.wrap
) oder Nicht-Java Heap-Speicher (mit ByteBuffer.allocateDirect
erstellt). Sie können die zugrunde liegenden byte[]
mit ByteBuffer.array
erhalten. Aber Aufruf flip
und ähnliche Methoden auf Puffer chnage nicht die eigentlichen Daten. Stattdessen Offsets mit den Daten zugeordnet sind, geändert. So entspricht mit byte
wäre die Offsets zu ändern, dass der Code mit ihm wird assoziieren.
Andere Tipps
Es gibt keine direkte Entsprechung des java.nio
Pakets in .NET. Asynchrone Kommunikation ist in der Regel mit Stream.BeginRead
/ EndRead
behandelt, aber es ist nicht wirklich das gleiche Modell. Können Sie uns sagen, was Sie zu tun versuchen?
EDIT: Sie haben jetzt zur Verfügung gestellt, die Low-Level-Details von dem, was Sie zu tun versuchen, aber da es für die nio
Klassen in .NET keine wirklichen äquivalent ist, werden Sie entweder haben sie selbst (nicht unmöglich, aber ein Schmerz) zu schreiben oder einen anderen höhere Ebene Typen verwenden. Möglicherweise kann MemoryStream
zum Beispiel verwenden - schreiben hinein, dann an den Anfang suchen zurück. Das ist ein Bit wie ein Byte Puffer Spiegeln. Wir können aber nicht sagen, ob oder nicht, dass ohne weitere Informationen in Bezug auf das übergeordnete Ziel geeignet ist. Es kann eine viel bessere Möglichkeit sein, es zu tun.