java - 从字节中读取高位和低位在 Java 中未按预期工作
问题描述
我有一个major: 0
和minor: 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 工作正常。
提前致谢
解决方案
推荐阅读
- f# - 如何在 f# 中将 int list list list 转换为 (int * int) list
- python - 我想从网站中排除粗体段落
- python - 对 Polyval 的输出感到困惑
- javascript - 可以在 div 后面获取背景颜色吗?
- php - GAE 将更多域路由到我的主要 appengine 应用程序
- c++ - 使用 Pro*C,如何使用带有构造函数的 C++ 结构,在 EXEC SQL BEGIN DECLARE SECTION 中复制构造函数
- php - select2 将值设置为选定或占位符
- javascript - Using ajax in a callback where the parent process itself relies on an ajax call
- sql - 在解释计划中将日期显示为文字
- c# - 如何更改此代码以允许抽象类或接口在相同的自动生成的类上工作?