我正在使用Android开发软件。在软件的特定部分,我需要将short转换为byte并重新转换为short。我尝试了下面的代码,但转换后的值不一样。
short n, n1;
byte b1, b2;
n = 1200;
// short to bytes conversion
b1 = (byte)(n & 0x00ff);
b2 = (byte)((n >> 8) & 0x00ff);
// bytes to short conversion
short n1 = (short)((short)(b1) | (short)(b2 << 8));
执行n和n1的代码值后不相同。为什么呢?
答案 0 :(得分:5)
我没有让Grahams解决方案工作。然而,这确实有效:
n1 = (short)((b1 & 0xFF) | b2<<8);
答案 1 :(得分:1)
您可以使用ByteBuffer:
final ByteBuffer buf = ByteBuffer.allocate(2);
buf.put(shortValue);
buf.position(0);
// Read back bytes
final byte b1 = buf.get();
final byte b2 = buf.get();
// Put them back...
buf.position(0);
buf.put(b1);
buf.put(b2);
// ... Read back a short
buf.position(0);
final short newShort = buf.getShort();
编辑:修复API使用情况。尔加。