Передаю данные в 16-ричном виде. Вот посылка
01 0f 00 19 00 00
И дальше в коде разбираю эти данные. Вот код:
ByteBuffer tel=ByteBuffer.wrap(inData);
agg_id = tel.getInt(0);
status = tel.get(4);
Посылка в 10-тичном виде выглядит вот так вот:
1 15 0 25 0 0
Все элементы в int типе. Первый со значением 1 храниться в одном байте. Второй в 2 байтах и третий в 4 байтах. Но в результате в agg_id записывается значение -2 милиона примерно. Хотя должна единица которая храниться в первом байте. Почему так происходит? Может я как то не так понимаю.
Документация к ByteBuffer.getInt
утверждает, что считывается четыре байта, что логично для int
:
Reads four bytes at the given index, composing them into a int value according to the current byte order.
Считывает четыре байта по заданному индексу, собирая их в целочисленное значение соответственно текущему порядку байтов.
Попробуйте использовать byte get(int index)
:
agg_id = tel.get(0);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем приветЕсть приложение WPF
Из метода действия в контроллере вызываю метод JavaScript()Почему в браузере при обращении к методу действия он не выводится?
Как запомнить старое положение вкладок в TabControl при каждом запуске программы***Мое решение При закрытие программы запоминаю индекс каждой...