А вообще вопрос к топикстартеру - зачем это? Просто если для самосовершенствования, то понятно. Но если для кодирования с целью защиты информации (а навевает на эту мысль), то грош цена такого "кодирования". Особенно, если цель защиты обычный осмысленный текст. Раскодирует новичок в течение нескольких минут, на мой взгляд.
Если первый байт 0 или 1 а именно это в цикле поиска то это одно если байт чётный не чётное число то нужна проверка на нулевой бит изначально далее он в зависимости от этого начинает читать с конца или начала байты к середине в новую память после чего последний прочитанный байт чётный нет типа записывает в файл первым (может последним,не вникал)потом остальное,а потом видимо раскодирует читая уже файл наоборот читая и занося результат к середине.