首页 > 解决方案 > 从字节中读取高位和低位在 Java 中未按预期工作

问题描述

我有一个major: 0minor: 1517版本,它以字节编码如下:[5,-19]

其中第一个字节的高 4 位表示major版本。

第一个字节和第二个字节的低 4 位代表minor版本。

同样的十六进制是:05ED

下面是我用来获取结果的代码:

byte[] data = new byte[] {5, -19};
int major = data[0] >> 4 & 0x0F;
int minor = (((data[0] & 0x0F) << 8) | data[1]) & 0xFFFF_FFFF;
System.out.println("Major:" + major + ", Minor:" + minor);

预期产出 Major:0, Minor:1517

实际输出 Major:0, Minor:-19

我在这里找不到我做错了什么。

有人可以在这里帮助我吗?

注意:同样的事情 iOS 工作正常。

提前致谢

标签: javaandroidbytebit

解决方案


推荐阅读