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

November 2025

S M T W T F S
       1
23456 7 8
9 1011 12 1314 15
16171819 202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 20th, 2025 08:53 pm
Powered by Dreamwidth Studios