ByteBuffer getInt() question

Nous sommes à l'aide de Java ByteBuffer pour la socket de communication avec un serveur C++. Nous savons que Java est Big-endian et de la communication par Socket est également Big-endian. Donc, chaque fois que le flux d'octets reçus et les mettre dans un ByteBuffer en Java, nous appelons getInt() pour obtenir la valeur. Pas de problème, pas de conversion.

Mais si d'une certaine façon nous avons spécifiquement l'ByteBuffer ordre des octets pour Little-endian (mon collègue l'a fait),

  1. sera la Java convertir automatiquement le Big-endian dans le Little-endian lorsque les données sont placées dans le ByteBuffer?
  2. Puis le getInt() de la Little-endian version sera de retour une valeur de droite pour vous?

Je suppose que la réponse aux deux questions est oui. Mais quand j'ai essayer de vérifier mes devinettes et essayer de trouver comment le getInt() fonctionne de ByteBuffer, j'ai trouvé que c'est une méthode abstraite. La seule sous-classe de ByteBuffer est le MappedByteBuffer classe qui ne fait pas de mettre en œuvre le résumé getInt(). Mais où est donc la mise en œuvre de la getInt() la méthode?

Pour l'envoi, parce que nous sommes à l'aide de Little-endian ByteBuffer, nous avons besoin de les convertir dans un Big-endian octets avant de nous mettre sur la socket.

Je vois deux implémentations de la ByteBuffer dans la version 6 de Java qui implémentent getInt(). Ils sont java.nio.DirectByteBuffer et java.nio.HeapByteBuffer. Un rapide coup d'œil à HeapByteBuffer dirait qu'il ne poignée de l'octet de commande que vous attendez.
Qu'entendez-vous par socket de communication? l'infra, qu'est TCP/UDP...etc est en big endian, mais les données que vous envoyez dépend de la façon dont vous le mettez et sur la plate-forme.
Vous avez plus de 40 questions accepté de répondre. Peut-être vous pouvez suivre les réponses de sorte qu'ils peuvent être acceptés.
"J'imagine que la réponse aux deux questions est oui.' Difficile de voir pourquoi l'installation devrait être fourni dans le cas contraire.

OriginalL'auteur 5YrsLaterDBA | 2011-08-04