Я пытаюсь представить результат хэша MD5 в самой короткой из возможных строк. Кажется бесполезным просто превращать его в шестнадцатеричную строку и позволить G через Z идти впустую.
У меня была одна идея - получить хэш MD5 моего ввода в виде массива байтов и построить из него BigInt
. Затем я могу позвонить toString(36)
и получить номер в виде base-36 в строке (-?[0-9a-z]*
, номер может быть положительным или отрицательным). У меня это работает.
Проблема в том, что я не уверен, что BigInt
может быть создан с любым массивом байтов, и я не могу доказать это с помощью тестирования (по крайней мере, не своевременно!). Я так полагаю, потому что я понимаю, что BigInt может быть произвольного размера. Я не могу использовать этот метод, пока не узнаю наверняка, что он будет работать для всех возможных выходов. Итак, может кто-нибудь сказать мне, будет ли он работать для всех входных данных (или как легко преобразовать байтовый массив, чтобы он мог быть представлен в базе 36).
Разъяснение : У меня есть реализация, я спрашиваю о поведении по всему домену (т.е. 00000000000000000000000000000000 до FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)