Каждая цифра имеет 10 вариантов (от 0 до 9).
Каждая буква имеет чуть больше вариантов, в зависимости от алфавита (a-zA-Z это 52 варианта, но некоторые буквы могут быть специально исключены по каким-то соображениями). А если это символ, который может быть как буквой, так и цифрой, то вариантов ещё больше (например, 62). В кодировке base64 добавляются ещё пара символов, чтобы было круглое число 64, хотя реально там чуть сложнее.
Количество вариантов - это условно мера информации, которую можно запихнуть в символ (или в строку соответственно).
Для строки количество вариантов можно посчитать перемножением для каждого символа. Например, строка из двух цифр (от 00 до 99) - это 100 вариантов (10*10). Три цифры - 1000 вариантов и так далее. Аналогично с буквенно-цифирным алфавитом. Набор из двух таких символов - это 62*62 = 3844 варианта. Здесь уже чётко видно, что три цифры можно перевести в два символа без потери информации.
То есть NNN ----> CC, где N - цифра, C - буква или цифры, с учётом регистра.
То есть символов нужно меньше, чем цифр.
Как именно происходит кодирование, сказать сложно. Самый простой вариант - это воспринимать цифирную последовательность, как число, и далее работать с числом. Делается это примерно так (алгоритм на пальцах):
1) Делим число на 62.
Остаток от деления - это номер буквы в алфавите, выбираем эту букву. Результат деления без остатка переходит как число для следующего шага.
2) Делим (получившееся) число на 62.
Остаток от деления - это номер следующей буквы, которая плюсуется к предыдущей.
3) И так далее.
Так происходит кодирование, в результате которого формируется строка из букв.
Обратное кодирование примерно такое же, только все шаги в обратную сторону делаются.
Однако здесь стоит упомянуть, что это именно самый простой алгоритм кодирования. Обычно всё же есть какие-то нюансы, некая избыточность. Например, может быть правило, что последние две цифры обязаны быть контрольной суммой остальных цифр в последовательности. Поэтому если кто-то по ошибке (или со злым умыслом) поменяет какую-то цифру, то код станет невалидным. Это своеобразная защита. Поэтому подробности и нюансы кодирования нужно спрашивать у разработчика штрих-кода, нужно обратиться к документации...
...Либо заниматься хакерством - пытаться подобрать алгоритм кодирования.
Наконец, в кодирование для более полной защиты может быть также встроено некое простое шифрование. Например, это могут быть какие-то перестановки, какое-то перемешивание или преобразования по определённом обратимому алгоритму. Здесь опять же нужно либо иметь доступ к документации, либо "взламывать" кодирование. В общем, всё зависит от того, хотят ли разработчики кода, чтобы вы понимали принцип его работы или нет. Если нет, то остаётся только второе.