Чтение данных по байтам

187
17 октября 2017, 00:51

Передаю данные в 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 милиона примерно. Хотя должна единица которая храниться в первом байте. Почему так происходит? Может я как то не так понимаю.

Answer 1

Документация к 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);
READ ALSO
ListBox wpf SelectItem как получить в коде

ListBox wpf SelectItem как получить в коде

Как получить выделенный Item из списка?

281
ASP.NET.Не работает метод JavaScript()

ASP.NET.Не работает метод JavaScript()

Из метода действия в контроллере вызываю метод JavaScript()Почему в браузере при обращении к методу действия он не выводится?

239
Запомнить старое положение вкладок TabControl WPF

Запомнить старое положение вкладок TabControl WPF

Как запомнить старое положение вкладок в TabControl при каждом запуске программы***Мое решение При закрытие программы запоминаю индекс каждой...

285