Чтобы закодировать ByteArray в Base64, я мог бы просто использовать Base64 из java.util. Но теперь мне нужно изменить свой код, чтобы вместо этого создать base36. К сожалению, java.util не имеет этой функции. Мне нужна функция/метод, который принимает ByteArray и выводит String, содержащую base36. его представление. Никаких других изменений, таких как удаление ведущих нулей.
Итак, этот другой вопрос выглядит похожим, но у нас две проблемы. Сначала вопрос был отредактирован, так что я не понимаю ответа. Во-вторых, в ответе используется BigInteger, и я боюсь, что преобразование ByteArray в BigInteger может привести к потере информации (например, начальным нулям). Похожий вопрос о stackoverflow.
base36digits = Math.ceil(bytes * Math.log(256) / Math.log(36))
. Но base36 звучит так, как будто это неправильная кодировка для использования здесь, поэтому, если вы можете выяснить, зачем она нужна, и вместо этого переключиться на что-то другое, например base64, это было бы разумно. - person Rup   schedule 14.09.2020bytes
в расчете. - person Rup   schedule 22.09.2020Math.log(256) / Math.log(36)
– это количество цифр с основанием 36, которое вам потребуется для представления одного байта данных, поэтому мы умножаем его на количество имеющихся у вас байтов, а затем округляем в большую сторону, чтобы получить необходимое количество цифр с основанием 36. - person Rup   schedule 22.09.2020