Aug. 18th, 2024

juan_gandhi: (Default)
Надо было написать base62. Только начал было писать, как мне бот навалял. Ну думаю, спасибо, Петрушка. Погнал аппликацию. Оказалась полная фигня. Ну вот, ну пришлось самому писать. Почему его нигде нету-то? Хм.

  def base62(bytes: Array[Byte]): String =
    base62(new BigInteger(1, bytes))

  private val b62 = BigInteger.valueOf(62)

  def base62(number: BigInteger, buffer: StringBuilder = new StringBuilder): String = {
    if (number.compareTo(BigInteger.ZERO) == 0)
      return if (buffer.isEmpty) "0" else buffer.toString.reverse
    val rem = number.mod(b62).intValue
    val ch = if (rem < 10) (rem + '0')
        else if (rem < 36) (rem - 10 + 'A')
        else               (rem - 36 + 'a')
    buffer.append(ch.toChar)
    base62(number.divide(b62), buffer)
  }



UPDATED

  def base62(number: BigInteger, buffer: String = ""): String = {
    if (number.compareTo(BigInteger.ZERO) != 0) {
      val divAndRem = number.divideAndRemainder(b62)
      val digit = divAndRem(1).intValue
      val shift = if (digit < 10) '0': Int
             else if (digit < 36) 'A' - 10
             else                 'a' - 36
      base62(divAndRem(0), (digit+shift).toChar + buffer)
    } else
      if (buffer.isEmpty) "0" else buffer
  }

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

September 2025

S M T W T F S
 1 2345 6
78910111213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 8th, 2025 03:59 am
Powered by Dreamwidth Studios