2009-03-03 3 views
2

Je suis en train de porter 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 veux flip ces tableaux d'octets, tout comme Buffer le fait, car je crois que sous la classe Buffer utilise aussi byte [].Un équivalent de javax.nio.Buffer.flip() dans C#

Merci

Répondre

0

ByteBuffer peut utiliser un byte[] (créer, disons, ByteBuffer.wrap) ou segment de mémoire non-Java (créé avec ByteBuffer.allocateDirect). Vous pouvez obtenir le byte[] sous-jacente avec ByteBuffer.array. Mais appeler flip et des méthodes similaires sur les tampons ne gèrent 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 byte serait de changer les offsets que votre code est en train de lui associer.

+0

Merci, comment flip change le décalage? –

+0

Comme documenté ... "La limite est définie à la position actuelle, puis la position est mise à zéro." –

1

Il n'y a pas d'équivalent direct du paquet 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. Pourriez-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 pour les nio classes dans .NET il n'y a pas vraiment d'équivalent, vous soit doivent écrire vous-même (pas impossible, mais une douleur) ou utiliser un type de niveau supérieur différent. Vous pourriez peut-être utiliser MemoryStream par exemple - écrivez-le, puis revenez au début. C'est un bit comme renverser un tampon d'octets. Cependant, nous ne pouvons pas dire si cela est approprié sans plus d'informations sur l'objectif de niveau supérieur. Il pourrait y avoir une bien meilleure façon de le faire.

+0

@Jon vient d'ajouter une exigence. merci –