J'ai un problème avec la conversion des valeurs-octets brutes dans les types de java. Je reçois des octets par un socket de datagramme en tant que tableau d'octets. Je sais exactement quels octets signifie quoi, mais je ne sais pas comment les convertir de manière appropriée (je veux dire que je connais les compensations, mais je ne sais pas si ce que je pense avoir reçu est correct;)).Conversion des valeurs octets brutes dans les types Java
Par exemple, je veux convertir court 16 bits non signé dans le type int java. J'ai trouvé quelques exemples dans le web, l'un est:
public int getUShort(byte[] bytes, int offset) {
int b0 = bytes[offset] & oxFF;
int b1 = bytes[offset + 1] & oxFF;
return (b1 << 8) + (b0 << 0);
Un autre est le même, mais la dernière ligne est:
return (b0 << 8) + b1;
Bien sûr, il donne des résultats différents. Laquelle est correcte? Pouvez-vous s'il vous plaît me donner aussi un exemple valide comment faire la même chose, mais pour un non signé longtemps?
Merci d'avance!
Vous pouvez également utiliser un [DatagramChannel] (http://download.oracle.com/javase/6/docs/api/java/nio/channels/DatagramChannel.html) qui lit directement dans un 'ByteBuffer' (pas besoin de envelopper un tableau.) – finnw