Я, кажется, понял, с чем у вас проблема :-) Не бывает байтов в десятичной, двоичной и вообще какой-либо системе счисления. Бывают просто байты, т. е. куски информации, кодирующие одно состояние из 256 возможных. Система счисления — это вопрос интерпретации этой информации как числа. А можно интерпретировать как символ или элемент некого абстрактного множества — на здоровье! Главное, что независимо от интерпретации байты можно сравнивать на «равно — не равно».Итак, у нас есть входной поток байтов. Дёргаем из него подряд три байта. Если среди них есть два (как минимум) одинаковых, то их значение отправляем в выходной поток, иначе сообщаем о невозможности прочитать очередной символ. Переходим к следующим трём байтам. И так, пока не кончится входной поток.
Всё. Осталось предыдущий абзац перевести с русского на пёрл :-) Заметьте, я ни разу там не упомянул систему счисления — она не нужна.
P.S. Непонятен выбор языка. Пёрл не очень-то приспособлен для работы с нетекстовыми данными. Имхо, даже на чистом Си решение вышло бы красивее.