convertir du court au octet, et vice-versa en Java

Je suis en train de convertir un court en 2 octets...et puis à partir de ces 2 octets essayer d'obtenir la même valeur. Pour cela, j'ai écrit ce code:


        short oldshort = 700;

        byte 333= (byte) (oldshort);
        byte byte2= (byte) ((oldshort >> 8) & 0xff);

        short newshort = (short) ((byte2 << 8) + byte1);

            System.out.println(oldshort);
        System.out.println(newshort);

Pour la valeur de 700 (oldshort), newhosrt est 444. Après quelques tests, il looksl ike \ce code ne fonctionne que pour certaines valeurs. ...Comme si oldshort=50, alors cela fonctionnera très bien..mais si c'est -200, ou de plus grandes valeurs de 127 (je crois), ça ne fonctionne pas. Je pense qu'il y a un problème avec la signature d'octets, en complément à deux de la valeur, etc...mais je ne peux pas comprendre comment le résoudre.

Une idée?? Native façon de le faire en java?? Merci à l'avance!

Ne pas utiliser plus (+) lors de la recombinaison, vous voulez bit à bit OU (|).
comment sont-ils différents dans ce cas?
La différence est que le OU les acides gras saturés, tandis que d'AJOUTER de porte. Plus au point, lorsque vous essayez de faire les opérations bit à bit, l'utilisation d'un opérateur au niveau du bit. Si vous souhaitez que le bit à bit complément de x, vous ne pouvez pas écrire - 1 - x, le feriez-vous?

OriginalL'auteur arakn0 | 2010-06-25