Я думаю, что у меня будет базовый двоичный идентификатор одинаковой длины, скажем, 256 бит.
10101010101000.... up to 256 points
Тогда я смогу получить slug из URL, который закодирован в произвольном алфавите, например:
- шестнадцатеричный алфавит
- цифра алфавита
- 26-буквенный алфавит
- 52-буквенный алфавит (заглавными буквами)
- Пользовательский алфавит (5 букв, 10 букв, 20 букв и т. Д.).
- ...
Так бы это выглядело так:
/123123123 -> fetches a record with _id == 10101010... something
Или мы можем использовать другую базу вместо 10 цифр, как 26-буквенный алфавит:
/AEFCZ... -> fetches the same record with _id == 10101010... something
Вопрос в том, как конвертировать ( a → b ), где a - это URL-слаг, а b - это двоичное представление.
Где я запутался (и чего мне не хватает), так это понимания того, как они связаны. Я не понимаю, как вы можете перейти от одного к другому, но я знаю, что это как-то возможно.
Хотите знать, если это так же просто (сложно?), Как представлять каждую пару слаг / бинар как BigInt, тогда выполните:
- конвертировать слаг в BigInt
- преобразовать BigInt в двоичную строку
Или если бы это даже сработало. Или, если есть лучший подход, потому что я не знаю, как реализовать BigInts, поэтому не уверен, нужно ли учиться.
Конечным результатом будет то, что я смогу использовать любую строку с базовым кодированием и любым алфавитом, который я хочу , для извлечения записи из базы данных. Сначала я преобразую слаг в нечто, а затем использую это, чтобы получить двоичное представление, которое можно использовать, например, в качестве ключа для поиска в SQL.
Хотите знать, как подойти / сделать такого рода вещи.