Я нашел решение, используя x
/ X
в String.format()
:
fun Long.to16DigitUnsignedLowercaseHexString() =
"%016x".format(this)
fun Long.to16DigitUnsignedUppercaseHexString() =
"%016X".format(this)
Я проверил, что оно работает для граничных значений 0L
, 1L
, Long.MAX_VALUE
, -1L
и Long.MIN_VALUE
, поэтому проблем быть не должно.
Аналогичный вопрос задается в java - Как я могу дополнить целое число нулями слева?- Переполнение стека .Глядя на это в первый раз, я не ожидал, что это сработает, потому что я думал, что x
/ X
для шестнадцатеричного форматирования со знаком.Оказалось, что я ошибся, и x
/ X
точно для шестнадцатеричного форматирования без знака.