2017-05-29 1 views
0

J'ai un problème avec LSB et MSB lors de l'envoi de la demande à l'appareil. Je dois envoyer sessionId (int). Il doit être envoyé sur quatre octets. En ce moment, j'envoie tableau d'octets comme ceci:
Ainsi, par exemple, si idSession est 14 J'envoie:Android | LSB & MSB

public static final byte[] intToByteArray(int value) { 
     return new byte[] { 
       (byte)(value >>> 24), 
       (byte)(value >>> 16), 
       (byte)(value >>> 8), 
       (byte)value}; 
    } 


byteData[36] - 0 
byteData[37] - 0 
byteData[38] - 0 
byteData[39] - 14 

Le problème est - je dois mettre byteData [36] comme Pf et byteData [ 39] comme MSB. Peux-tu m'aider avec ça ? Merci d'avance :)

+1

Jetez un coup d'œil à [this] (https://stackoverflow.com/a/1936865/6950238) answer. –

+0

Avec cette solution, byteData [39] est toujours 14. J'ai besoin que la valeur 14 soit sur byteData [36] – Bartos

+0

Utilisez simplement la commande 'ByteOrder.LITTLE_ENDIAN' au lieu de la commande' ByteOrder.BIG_ENDIAN'. –

Répondre

1

De this réponse Gregory Pakosz avec ByteOrder.BIG_ENDIAN à ByteOrder.LITTLE_ENDIAN changement d'ordre:

ByteBuffer b = ByteBuffer.allocate(4); 
b.order(ByteOrder.LITTLE_ENDIAN); 
b.putInt(14); 
byte[] result = b.array(); 

Dans ce cas b[0] == 14.