Обучение и трудоустройство Java-программистов от Junior до Senior

Занести большую константу в байтовый массив

 
 
 
Сообщения:84
Объявлен массив байт

byte[] arr = {0X23, ..., 0xff};

На 0xff получаю ошибку: требуется byte найден int. Как правильно записать, чтобы не было ошибки?
 
 
Сообщения:841
Тип byte знаковый. Может принимать значения от -0x80 до 0x7F. Так что 0xFF в байт не записать никак.

Нет ничего проще, чем заблудиться в иллюзиях, нет ничего сложнее, чем освободиться от них.
 
 
Сообщения:169
0xff это минус единица будет, что является вполне адекватным значением для byte

имхо, можно скастить и все
(byte) 0xff

"Мы же профессионалы! Мы всегда делаем чуть больше, чем требуется!" (с)
 
 
Сообщения:841
MuH3gPaB:
0xff это минус единица будет, что является вполне адекватным значением для byte

имхо, можно скастить и все
(byte) 0xff


Где здесь -1? 0xff это 255

Если бы в массив надо было поместить -1, то так бы и записали -0x01

Нет ничего проще, чем заблудиться в иллюзиях, нет ничего сложнее, чем освободиться от них.
 
 
Сообщения:430
ты путаешь: Java byte с C unsigned char.
в яве нет беззнаковых типов.
 
 
Сообщения:84
Спасибо, действительно просто (byte)0xff работает.
 
 
Сообщения:841

Нет ничего проще, чем заблудиться в иллюзиях, нет ничего сложнее, чем освободиться от них.
 
 
Сообщения:169
Роман Осипов:
Где здесь -1? 0xff это 255


0xff - это интовый литерал, который действительно равен 255
но при приведении типа к byte, становится равен -1, но это совсем не важно

Последнее время приходилось много работать с низкоуровневыми протоколами из java, и
часто встречаешься с байтовыми последовательностями.
И если в доке к протоколу, допустим, написан код команды "0x04 0xfc 0xff 0xd5"
то для читаемости хорошо бы и в коде его писать так же

есть два варианта - приводить тип к byte или использовать массив примитивов большего размера (например short).

"Мы же профессионалы! Мы всегда делаем чуть больше, чем требуется!" (с)
 
Модераторы:alon4iknazicaTaky_
Сейчас эту тему просматривают:Нет