Android中的短到字节和字节到短的转换
Posted
技术标签:
【中文标题】Android中的短到字节和字节到短的转换【英文标题】:short to byte and byte to short conversion in Android 【发布时间】:2011-12-16 11:34:49 【问题描述】:我正在开发一款 android 软件。在软件的特定部分,我需要将短转换为字节并重新转换为短。我尝试了下面的代码,但转换后的值不一样。
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的值不一样。为什么?
【问题讨论】:
重复***.com/questions/2188660/… 【参考方案1】:我没有让 Grahams 解决方案起作用。但是,这确实有效:
n1 = (short)((b1 & 0xFF) | b2<<8);
【讨论】:
【参考方案2】:您可以使用 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 使用。呸。
【讨论】:
这绝对是矫枉过正,OP的问题可以通过简单地使用按位运算符来解决,如@Jave的答案所示 除了这个解决方案不关心字节序! 这本身并不是一个糟糕的解决方案。如果要保存大量值或将一组短裤转换为字节然后再返回,这绝对值得考虑。最简单的情况 - 根据要求在一个短字节/两个字节之间进行转换,最好在不分配缓冲区的情况下完成。以上是关于Android中的短到字节和字节到短的转换的主要内容,如果未能解决你的问题,请参考以下文章