Возможная потеря точности в объявлении байтов Java

В настоящее время я пытаюсь написать последовательную реализацию MODbus в java. Основная проблема, с которой я сталкиваюсь, заключается в том, что когда я объявляю байт (или короткий, если на то пошло) как что-то вроде 0xC4 (для байта), я получаю «Ошибка потери точности».

Есть ли что-то вокруг этого? Или я вынужден относиться ко всем числовым типам так, будто они на 1 бит короче, чем они есть на самом деле (например, 7-битные, 15-битные, 31-битные, 63-битные)?

И пример:

 byte[] test = 
    {
        0x11,
        0x02,
        0x00,
        0xC4,
        0x00,
        0x16
    };

Это выдает предупреждение на 0xC4 о том, что требуется байт «Возможная потеря точности», найденный int.


person Valarauca    schedule 06.02.2014    source источник
comment
Покажите небольшой фрагмент кода, где вы получаете предупреждение   -  person AlexWien    schedule 06.02.2014
comment
Обновлено, чтобы показать пример.   -  person Valarauca    schedule 06.02.2014


Ответы (1)


Когда вы говорите 0xC4, это целочисленный литерал, который больше, чем максимальное значение для byte, 127, поэтому вы должны явно привести его к byte.

Пытаться

byte[] test = 
{
    0x11,
    0x02,
    0x00,
    (byte) 0xC4,
    0x00,
    0x16
};
person rgettman    schedule 06.02.2014