Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Быстрое преобразование байтов в биты


Автор: lando1 17.8.2008, 15:15
У меня есть 2 байта. нужно в их последовательной битовой записи взять из них 12 младших бита и превратить их в десятичное число.
Как это сделать по-быстрому?

Пока знаю решение - 
1) превратить байт в Integer, 
2) использовать метод Integer.toBinaryString(), 
3) объединить 2 полученые строки,
4) парсить с конца и переводить в десятичное число


но что-то мне подсказывает, что должен быть путь более быстрый и простой.

Автор: Alexandr87 17.8.2008, 16:14
Нужно использовать битовые операции
что-то вроде этого:
((byte1<<8 & 0x0000ff00) | byte2) & 0x00000fff

Автор: yar 17.8.2008, 16:32
Код

   byte l = ...
   byte h = ...
   int all = ((h << Byte.SIZE) | (l & 0xFF)) & 0xFFF;  // 12 младших бит
   System.out.println(Integer.toBinaryString(all));


Автор: lando1 13.10.2008, 18:36
сейчас стоит та же самая задача, только битовое представление в обратном двоичном коде.
как модернизировать это преобразование 

Код

   byte l = ...
   byte h = ...
   int all = ((h << Byte.SIZE) | (l & 0xFF)) & 0xFFF; 


чтобы получить правильное число?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)