我有一个规范读取接下来的两个字节是signed int.
要在java中读取我有以下内容
当我使用以下代码在java中读取signed int时,我得到值65449
计算无符号的逻辑
int a =(byte[1] & 0xff) <<8
int b =(byte[0] & 0xff) <<0
int c = a+b
我认为这是错误的,因为如果我和0xff我得到一个无符号的等价物
所以我删除了& 0xff和下面给出的逻辑
int a = byte[1] <<8
int b = byte[0] << 0
int c = a+b
which gives me the value -343
byte[1] =-1
byte[0]=-87
我试图用规范读取的方式来抵消这些值,但这看起来很错误.因为堆的大小不在此范围内.
在java中进行signed int计算的正确方法是什么?
这是规范的方式
somespec(){xtype 8 uint8 xStyle 16 int16}
xStyle:一个带符号的整数,表示从此Widget()结构的开头到xStyle()结构的开头的偏移量(以字节为单位),该结构表示由页面窗口小部件定义的继承样式以及专门应用于此窗口小部件的样式.