我想将一个short转换为2个字节,然后从这两个字节中获取相同的short值。为此,我编写了以下代码:
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);
对于旧短整型数值为700,新短整型数值为444。经过测试,看起来这段代码只适用于某些数值。例如,如果旧短整型数值为50,则可以正常工作。但是,如果它是-200或大于127(我认为)的值,则无法正常工作。我想这可能与有符号字节、二进制补码值等有关,但我无法找出解决方法。有任何想法吗?在Java中有任何本地方法吗?提前感谢!
x
的位补码,您不会写成-1-x
,对吧? - Ben Voigt