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

October 2025

S M T W T F S
    1 23 4
5 67891011
12131415161718
19202122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 8th, 2025 03:42 pm
Powered by Dreamwidth Studios