我试图将一个短转换为2个字节...然后从这两个字节尝试获得相同的短值。对于这一点,我已经写了这个代码:从短转换为字节和viceversa在Java
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(oldshort)的值,newhosrt是444经过一番测试,它looksl IKE \ t这代码只对某些值。就像...如果oldshort = 50,那么它会正常工作..但如果它是-200,或者比127更大的值(我认为)它不起作用。我猜想有符号字节,二进制补码值等有问题......但我无法弄清楚如何解决它。
任何想法??任何本地的方式来做到这一点在Java?提前致谢!
不要使用加(+)重组时,你想按位OR( |)。 – 2010-06-25 01:43:02
@Ben - 他们在这种情况下有什么不同? – mdma 2010-06-25 02:48:17
区别在于ADD在进行时饱和。更重要的是,当您尝试按位操作时,请使用按位运算符。如果你想要'x'的按位补码,你不会写' - 1 - x',你会吗? – 2010-06-25 03:37:53