Почему при переходе из 16-значной системы в 64-значною длинна строки увеличилась, а не уменьшилась?
Потому что на самом деле у вас переход из 256-ричной системы в 64-ричную. Base64 позволяет кодировать любые строки, а не только из 16 символов 0-9,a-f.
Если вы хотите вашу строку интерпретировать как 16 запись, то вам надо ее сначала из hex записи раскодировать. Гуглите HexToBase64, hexToAscii или HexDecode. Какая нибудь такая функция наверняка есть в библиотеке. Или ее можно самостоятельно написать, превращая по 2 символа в 1.
Да, только это все возможно только если у вас длина исходной строки четная.