我正在尝试追加两个具有十六进制值的字节并将它们存储为整数。显然一切都是无符号值。 我将提供一个例子,因为这样更容易看到。
两个字节 0x20 0x07
整数 编辑:哎呀我在这里犯了一个大错。抱歉所有的困惑。 我想整数存储2007而不是0x2007。我真的很抱歉。
有没有办法在不将字节转换为String并追加并切换到int的情况下执行此操作? 或者转换为String是唯一的方法吗?
答案 0 :(得分:4)
你可以尝试
byte b1 = (byte) 0x90;
byte b2 = (byte) 0xF7;
int i = ((b1 & 0xFF) << 8) | (b2 & 0xFF);
但是,如果您使用的是DataInputStream
或ByteBuffers
,则通常不需要这样做。在这两种情况下都可以使用getShort
。
答案 1 :(得分:3)
是的,只需将b1移位8位并将其添加到b2:
byte b1 = 0x20;
byte b2 = 0x07;
int i1 = (b1 << 8) + b2; // gives 0x2007
// alternatively
int sameInt = b1 * 256 + b2; // gives 0x2007