Хранить числа в бинарном виде в тексте? Подобное с оговорками практикуется в способе кодирования
Base64, который используется для передачи бинарных файлов по электронной почте. Есть также
ASCII85, который совместим оказывается даже с ДОСовскими однобайтовыми кодировками (CP866 и CP437). Оба эти варианта — не кодировки, а способ компактной записи бинарных данных текстом.
Подход с переменной длиной символа используется в кодировке
UTF-8. Она позволяет записывать в один байт много частоиспользуемых символов. Если первый байт использовать только для цифр, другие символы потребуют минимум двух байт, т.е. размер файлов для большинства текстов вырастет.
Если уменьшать минимальный кусочек подобной кодировки до суббайтовых величин, это тоже вряд ли часто будет давать выигрыш и усложнит работу с таким содержимым (например, как решать ситуацию, когда текст заканчивается на середине байта).
Не исключаю, что можно сделать немного более компактную для каких-то целей кодировку, чем UTF-8, но основной плюс последней в том, что она фактически стандарт сейчас. В ней также предусмотрен опциональный заголовок файла (
BOM) для автоопределения софтом. Удобно, когда у всех текстовых файлов одна и та же кодировка, либо она легко определяется.
Еще по теме вопроса, никто не запрещает смешивать бинарное представление чисел и текст в бинарных файлах. Бинарные форматы редко бывают похожими на текстовые: в них нет абзацев, нет экранирования символов, у полей обычно либо фиксированные размеры, либо размер обозначается до их начала, что позволяет использовать в данных любые значения байт, ведь никакое из них не означает конец блока. Есть бинарные форматы, такие же гибкие, как текстовые: например,
BSON, на котором основан медиаконтейнер mkv, основа WebM.
При разработке собственных бинарных форматов, важно определять в спецификации
порядок байт многобайтовых значений, таких как int32, ведь он по-умолчанию отличается на разных платформах.
Ответ на вопрос из заголовка, без учёта деталей, следующий. Количество информации зависит не только от количества символов, но и от размера алфавита. Оно равно размеру алфавита в степени количества символов. Байт — это два в восьмой степени. Три десятичных знака — это десять в третьей степени. Те же три десятичных знака, но набранные кодировкой из 150 символов, это 150 в третьей степени.