【scala】数値・36進数相互変換

IT
スポンサーリンク

ブログ更新しばらくご無沙汰しちゃいましたねー。

 

ということで今回は、

あまり使用する機会はないかもしれないですが、

scalaによる36進数(0-9A-Z)に変換するサンプルを紹介しようと思います。

 

とはいっても36進数までなら何進数でもOKな感じです。

 

 

 

 

 

数値→36進数

  def numToBaseNumber(n: Long, base: Int): String = { 
 
    val targetChar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
    var str = "" 
    var temp = n 
    while (temp > 0) { 
      val r = temp % base 
      str = targetChar.substring(r.toInt, r.toInt + 1) + str 
      temp = temp / base 
    } 
 
    str 
  }

 

引数nは変換対象の数字です。

引数baseは何進数?ってことです。36進数なら36を渡します。

 

36進数→数値

  def baseNumberToNum(s: String, base: Int): Long = { 
 
    val targetChar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
    var ret = 0L 
    for (c <- s.toCharArray) { 
      ret = ret * base + targetChar.indexOf(c) 
    } 
 
    ret 
  }

 

引数sは変換対象です。

引数baseは同じです。

 

ただこれだと、渡した変換後の値の進数と

引数で渡す進数の違いのチェックができてないので、

そのあたりはお好みでってことで。

 

ちょっと短いですが、

本日はこれまで。

それでは!

 

 

ブログランキング・にほんブログ村へ
にほんブログ村


人気ブログランキング

コメント

タイトルとURLをコピーしました