Вы должны написать свою собственную реализацию Iterable<Boolean>
, которая принимает массив байтов, а затем создает Iterator<Boolean>
значения, которые запоминают текущий индекс в байтовом массиве и текущий индекс в текущий байт. Тогда такой полезный метод пригодится:
private static Boolean isBitSet(byte b, int bit)
{
return (b & (1 << bit)) != 0;
}
(где bit
в диапазоне от 0 до 7). Каждый раз, когда вызывался next()
, вам приходилось увеличивать свой битовый индекс в текущем байте и увеличивать байтовый индекс в байтовом массиве, если вы достигли «9-го бита».
Это не совсем сложно - но немного боли. Дайте мне знать, если вы хотите пример реализации ...