Почему это выражение всегда дает -2 147 483 648 (11111111 11111111 11111111 11111111)? Я не понимаю. data[] представляет собой массив байтов, заполненный некоторыми значениями.
(((int)data[29] & 0x00000001) << 31) | (((int)data[30]&0x000000FF)<<12) | (((int)data[31]&0x000000FF)<<4) | (((int)data[32]&0x000000FF)>>>4)
Спасибо.
data[29]
доdata[32]
. - person John Wu   schedule 19.12.2017data
? На какой платформе вы работаете? Чему вы присваиваете это выражение и каков его тип данных? - person lurker   schedule 19.12.2017(int)data[32]&0x000000FF)>>>4
будет эквивалентно(int)data[32]&0x000000F0)>>>4
, потому что 4 младших бита все равно будут отброшены. - person phuclv   schedule 19.12.2017