В качестве общего референсного кода, где нет таких низкоуровневых вещей. как указатели, индексы, какие-то там маски, побитовые операции (в т.ч. сдвига) и прочего подобного, я бы предложил вот этот код на erlang'e (моего авторства). По моему, тут удалось достичь цели. (кстати, производительность также не слишком ужасная).

## Код:
```
encode_bin(<<>>,ResStr)-> lists:reverse(ResStr);
encode_bin(Bin, ResStr)->
    {HeadBin,TailBin,Zero} = case Bin of
                                 <<B:24, RestBin/binary>> -> {<<B:24>>     ,RestBin, 0};
                                 <<B:16                >> -> {<<B:16,0:8>> ,<<>>   , 1};
                                 <<B: 8                >> -> {<<B:8 ,0:16>>,<<>>   , 2}
                             end,
    <<A1:6,A2:6,A3:6,A4:6>> = HeadBin,
    encode_bin(TailBin,to_str([A1,A2,A3,A4],ResStr,4-Zero)).

to_str([],ResStr,_)         -> ResStr;
to_str([H|T],ResStr,NonZero)->
    case NonZero of 0 -> to_str(T,[$=|ResStr],NonZero);
                    _ -> to_str(T,[b64e(H)|ResStr],NonZero-1)
    end.
```


Полный текст модуля можно взять тут:http://paste.org.ru/?k86ho9или тут:http://erlang.pastebin.com/6fAa8WEW
(откровенно говоря, мне и там и там не нравится подсветка синтаксиса).

Синтаксис работы с бинарными даннами в ерланге превосходен. Особенно в сочетании с сопоставлением с образцом.