基数を指定した数値文字列変換
30分プログラム、その742。数値と文字列の相互変換をやってみました。
単なる相互変換ではおもしろくないので、基数を指定できるようにしてみました。
使い方
scala> strToNum("42",13) res41: Int = 54 scala> numToStr(54,13) res42: String = 42
ソースコード
val digits = ('0' to '9') ++ ('A' to 'Z') /** * 基数を指定した数値から文字列への変換 * * @param n 変換元の数値 * @param base 基数(<= 36) * @return 変換した文字列 */ def numToStr(n : Int, base : Int) : String = { if(n < base) digits(n).toString else numToStr(n / base, base) + digits(n % base).toString } /** * 基数を指定した文字列から数値への変換 * * @param s 変換元の文字列 * @param base 基数(<= 36) * @return 変換した数値 */ def strToNum(s : String, base : Int) : Int = { s.map(_ - '0').foldLeft(0)(_ *base + _) }