ByteBuffer Little Endian insert ne fonctionne pas
Je dois faire une communication à deux sens entre l'ancien système et un appareil android.
Le système d'héritage utilise little endian octet de commande.
J'ai mis en œuvre avec succès la réception de la partie, cependant l'envoi fonctionne pas.
Étrange parce que pour moi, il semble que le ByteBuffer classe dysfonctionnements (j'ai peine à croire qu')
ByteBuffer byteBuffer = ByteBuffer.allocate(4);
byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
byteBuffer = ByteBuffer.allocate(4);
byteBuffer.putInt(88);
byte[] result = byteBuffer.array();
Résultats:
[0, 0, 0, 88]
ByteBuffer byteBuffer = ByteBuffer.allocate(4);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
byteBuffer = ByteBuffer.allocate(4);
byteBuffer.putInt(88);
byte[] result = byteBuffer.array();
Également les résultats de la même:
[0, 0, 0, 88]
Cependant, si je ne me trompe pas little endian la commande doit retourner:
[88, 0, 0, 0]
Alors, quel est le point que je suis absent?
source d'informationauteur Sandor
Vous devez vous connecter pour publier un commentaire.
Vous, pour une raison étrange, à la réinitialisation de votre octet de tampons et de jeter le les copies précédentes où l'on avait changé le endian commande. Le code suivant fonctionne très bien pour moi:
Impressions [0, 0, 0, 88]
Impressions [88, 0, 0, 0]
Sur une note connexe:
Ce code:
Est environ 25% plus rapidement:
À l'aide du JDK 1.8.
Je suis en train de passer les points unicode à partir de JAVA C++ via JNI et la première méthode est la plus rapide que j'ai trouvé. Curieux qu'il est plus rapide que le deuxième extrait.