Окай. Делается это очень просто - мощность алфавита равняется 12ти, то есть нам потребуется 4 бита, чтобы его закодировать (хотим меньше - придётся обратится к хафманам). То есть свичём или ифами выбираем нужный квартет битов. Другими словами имеем отображение из символа в полубайт. Чтобы получать нормальные байты нужно разбивать на пары и складывать побитово результаты каждого символа с соответствующим смещением.
Есть способ попроще, возможно даже быстрее в скорости работы. Берём все пары [0-9\,\-]{2} и строим по ним хэш-таблицу, или те же самые ифы-свичи. Таким образом мы отказались от мутных складываний, а если использовали хэш-таблицу это ещё и быстрее будет. То есть в результате у нас будет отображение пар небольшого алфавита в байт.
Что-то мы естественно потеряем - мощность алфавита не кратна двойке - так что если требуется минимизировать трафик, возможно стоит сразу поточно жать в gzip, без предварительных манипуляций.