Java как разбирать uint8 в java?

У меня есть uint8 (беззнаковое 8-битное целое число) , входящее в UDP-пакет. Java использует только подписанные примитивы. Как правильно разобрать эту структуру данных с помощью java?

7
Вы имеете в виду uint8 ?
добавлено автор SLaks, источник

5 ответы

Просто прочитайте его как байт, а затем преобразуйте в int.

byte in = udppacket.getByte(0);//whatever goes here
int uint8 = in & 0xFF;

Битовая маска необходима, поскольку в противном случае значения с битом 8, установленным в 1, будут преобразованы в отрицательный int. Пример:

This:                                   10000000
Will result in: 11111111111111111111111110000000

So when you afterwards apply the bitmask 0xFF to it, the leading 1's are getting cancelled out. For your information: 0xFF == 0b11111111

17
добавлено
Спасибо, это было очень информативно. Я ценю ваш ответ
добавлено автор stackoverflow, источник
Благодаря! Очень признателен
добавлено автор milosmns, источник

Вы можете сохранить 8-бит в byte Если вам действительно нужно преобразовать его в значение без знака (и часто это не так), вы можете использовать маску

byte b = ...
int u = b & 0xFF;//unsigned 0 .. 255 value
3
добавлено

0xFF & number will treat the number as unsigned byte. But the resultant type is int

3
добавлено

Вы можете сделать что-то вроде этого:

int value = eightBits & 0xff;

The & operator (like all integer operators in Java) up-casts eightBits to an int (by sign-extending the sign bit). Since this would turn values greater than 0x7f into negative int values, you need to then mask off all but the lowest 8 bits.

2
добавлено

Вы можете просто проанализировать его в short или int , которые имеют достаточный диапазон для хранения всех значений беззнакового байта.

1
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async