ByteBuffer.getShort (index) не возвращает ожидаемое значение бита - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь получить данные из заголовка mp3 (заголовок начинается с индекса 32), используя ByteBuffer, поэтому, когда я использую метод getInt (), который возвращает все 32 бита заголовка mp3 (заголовок Mp3 имеет 32 бита).

int bitRate = 0;
ByteBuffer buf = ByteBuffer.wrap(header);
int frame_header = 0;
int size = buf.position(9).getInt();//size=22;
frame_header = 10 + size; //frameHeader=32;
int b = buf.getInt(frame_header);
System.out.println(Integer.toBinaryString(b)); // 11111111111110111011010001000000
short a = buf.getShort(frame_header); 
short aa = buf.getShort(48);
System.out.println(Integer.toBinaryString(Short.toUnsignedInt(a))); // 1111111111111011 expected the starting 16 bits of header
System.out.println(Integer.toBinaryString(Short.toUnsignedInt(aa))); //100101110000 wrong value expected should be the next 16 bit of the header which is 1011010001000000

в чем проблема?

К вашему сведению - я знаю, что у нас есть библиотека, но я хочу использовать этот метод для получения битрейта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...