У меня есть спецификация, которая гласит, что следующие два байта подписаны int.
Чтобы прочитать это в Java, у меня есть следующее
Когда я читаю подписанное int в Java, используя следующий код, я получаю значение 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
Я пытался компенсировать эти значения способом чтения спецификации, но это выглядит неправильно. Так как размер кучи не подпадает под это.
Какой правильный способ сделать для вычисления со знаком int в Java?
Вот как идет спецификация
somespec() { xtype 8 uint8 xStyle 16 int16 }
xStyle: целое число со знаком, представляющее смещение (в байтах) от начала этой структуры Widget () до начала структуры xStyle (), которая выражает унаследованные стили, определенные виджетом страницы, а также стили, которые применяются конкретно к этому виджету. .