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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top