Можно ли написать массив байтов вручную, но не писать к каждому числу (byte)?

180
18 апреля 2018, 09:04

Пример

byte[] packet = new byte[] {0xFE, 0x19, 0xAE, ...}

Приходится к каждму числу делать приставку {(byte) 0xFE, (byte) 0x19, (byte) 0xAE, ... }

можно сделать конвертер int в байт, но меня такой вариант смущает, так как кол-во памяти в разы увеличивается, да и работа лишняя на CPU

Answer 1

Как пишет документация, тип byte может содержать значения в пределах от -128 до 127. Значения, которые выходят за этот диапазон, нужно приводить к типу явно. Из этого следует:

byte[] packet = new byte[] { (byte) 0xFE, 0x19, (byte) 0xAE, ... };

Всегда, когда идет речь о потере точности или усечении значения, нужно явно приводить тип.

READ ALSO
AlertDialog криво отображается с API < 21

AlertDialog криво отображается с API < 21

У меня есть AlertDialog, в новых андроидах он отображается нормально, а в старых - гг

172
Проблемы с ObjectInputStream\ObjectOutputStream, считывание и запись объектов в файл

Проблемы с ObjectInputStream\ObjectOutputStream, считывание и запись объектов в файл

ЗдравствуйтеКласс(IdentificationUser) производит идентификацию пользователя(User),приложение сетевой чат

174
Почему не работает аннотация для Spring MVC?

Почему не работает аннотация для Spring MVC?

При написании REST API на Spring Boot решил порпробовать для всех path сделать префикс /rest при помощи аннотации, но почему-то не работает, причем старый...

192
Deserialize LocalDate

Deserialize LocalDate

Всем привет! Есть Restful вебсервис написанный с Spring Boot, который отдает entity с полем LocalDate с контроллераИ есть клиент для него на Андроиде, но проблема...

484