Java byte
- это 8-разрядный числовой тип со знаком, диапазон которого составляет от -128
до 127
( JLS 4.2.1 ). 233
находится вне этого диапазона; тот же битовый шаблон представляет -23
вместо.
11101001 = 1 + 8 + 32 + 64 + 128 = 233 (int)
1 + 8 + 32 + 64 - 128 = -23 (byte)
Тем не менее, если вы настаиваете на сохранении первых 8 бит int
в байте, то byteVariable = (byte) intVariable
делает это. Если вам нужно привести это значение к int
, вы должны замаскировать любое возможное расширение знака (то есть intVariable = byteVariable & 0xFF;
).