2014-02-06 3 views
2

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

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

И пример:

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

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

+1

Показать небольшой фрагмент кода, где вы получите предупреждение – AlexWien

+1

Изменено, чтобы показать пример. – Valarauca

ответ

2

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

Попробуйте

byte[] test = 
{ 
    0x11, 
    0x02, 
    0x00, 
    (byte) 0xC4, 
    0x00, 
    0x16 
}; 
Смежные вопросы