Un équivalent de javax.nio.Buffer.flip () en c #
Question
Je porte une partie du code java et j'ai besoin de pouvoir retourner ( javax.nio.Buffer.flip ()
).
J'utilise byte [] pour stocker des données et je souhaite retourner ces tableaux d'octets, un peu comme Buffer le fait, car je crois que la classe Buffer utilise également byte [].
Merci
La solution
ByteBuffer
peut utiliser un octet []
(créer à partir de, par exemple, ByteBuffer.wrap
) ou une mémoire de segment non Java (créée avec ByteBuffer.allocateDirect
). Vous pouvez obtenir le octet []
sous-jacent avec ByteBuffer.array
. Mais appeler flip
et des méthodes similaires sur les tampons ne modifie pas les données réelles. Au lieu de cela, les décalages associés aux données sont modifiés. Donc, l'équivalent avec octet
serait de changer les décalages que votre code lui associe.
Autres conseils
Il n'y a pas d'équivalent direct du paquetage java.nio
dans .NET. Les E / S asynchrones sont généralement traitées avec Stream.BeginRead
/ EndRead
, mais ce n'est pas vraiment le même modèle. Pouvez-vous nous dire ce que vous essayez de faire?
EDIT: Vous avez maintenant fourni les détails de bas niveau de ce que vous essayez de faire, mais comme il n’ya pas d’équivalent réel pour les classes nio
dans .NET, vous soit devez les écrire vous-même (ce n’est pas impossible, mais c'est une douleur) ou utilisez un type différent de niveau supérieur. Vous pourrez peut-être utiliser MemoryStream
par exemple: écrivez dessus, puis revenez au début. C'est un bit comme retourner un tampon d'octets. Cependant, nous ne pouvons pas dire si cela convient ou non sans plus d'informations sur l'objectif de niveau supérieur. Il y a peut-être une bien meilleure façon de le faire.