Android中的字节和字节到短的转换

时间:2011-12-16 11:34:49

标签: java android

我正在使用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的代码值后不相同。为什么呢?

2 个答案:

答案 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使用情况。尔加。