2013-09-24 2 views
3

Я пытаюсь преобразовать массив из 8 целых чисел (0 или 1) в тип байта java.8-разрядный байт преобразования

например.

[1,0,1,0,0,0,1,0] = 10100010 

Я попробовал поиск в Интернете, может быть, я не ввел правильные запросы? Заранее спасибо!

ответ

3

Использование BitSet для set() истина/ложь для конкретных показателей чтения массива, а затем преобразовать его в массив байтов

+0

большой , это именно то, что я искал. благодаря! Я отвечу, когда смогу. –

+0

hm, поэтому я пытаюсь выполнить bitet.set (7); и это дает мне неожиданную ошибку типа. какие-либо предложения? –

+0

'bitset.set (7, false);': См. Http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html#set%28int,%20boolean%29 –

0

Вы можете попробовать это

byte[] bits = { 1, 0, 1, 0, 0, 0, 1, 0 }; 
    byte b = 0; 
    for (int i = 0, m = 0x80; i < 8; i++, m >>= 1) { 
     if (bits[i] == 1) b |= m; 
    } 

или это одна линия решение

byte b = (byte) Integer.parseInt(Arrays.toString(bits).toString().replaceAll("\\D", ""), 2); 
Смежные вопросы