Чтение «длинных» байтов и изменение порядка байтовJAVA

Программисты JAVA общаются здесь
Anonymous
Чтение «длинных» байтов и изменение порядка байтов

Сообщение Anonymous »

У меня возникла проблема с чтением переменной Long из двоичного файла в Java.
Мой код:

Код: Выделить всё

Static long extractLong (DataInputStream dis) throw IOException{
byte[] bytes = new byte[8];
dis.read(bytes);
ByteBuffer byteBuffer = ByteBuffer.wrap(byte);
byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
return byteBuffer.getLong()
 }
Я знаю, что переменная должна быть 20577.
И я получаю 88377542049792.
Эти числа имеют больше смысла, когда вы видите их в шестнадцатеричном формате.
20577 = 5061

88377542049792 = 506100000000
Если я не меняю порядок (endianness), я получаю 61500000hex в качестве входных данных.
Изменяя порядок, кажется, что я меняю местами только два передних байта.
Я уверен, что совершаю ошибку, это мой первый проект, работающий напрямую с двоичным файлом

Вернуться в «JAVA»