Kotlinで文字列を整数に変換する
文字列を整数に変換し、整数を文字列に変換する方法を紹介する。
文字列(String)から整数(Int)へ変換する
KotlinではStringクラスにtoIntOrNull()拡張関数が定義されており、任意の文字列を数値型(Int)に変換できる。名前のとおり、変換できない文字列の場合はnullを返す。
val num1 = "100".toIntOrNull()
val num2 = "xyz".toIntOrNull()
Output:
100
null
String#toIntOrNull()のパラメーターとして基数(radix)を指定できるため、次のように2進数表記や16進数表記の文字列も解析できる。
val num1 = "10000000".toIntOrNull(2)
val num2 = "FFFF".toIntOrNull(16)
val num3 = "0xFFFF".toIntOrNull(16)
Output:
128
65535
null
上の結果から分かるように、16進数表記の文字列に0xという接頭辞が付いていると、toIntOrNull()はnullを返す点に注意する。
似た関数にString#toInt()があるが、この関数は解析に失敗するとnullを返す代わりにNumberFormatExceptionを発生させる。用途に応じて適切に使い分けよう。
try {
val num = "xyz".toInt()
println(num)
} catch (ex : NumberFormatException) {
System.err.println(ex)
}
整数(Int)から文字列(String)へ変換する
Int.toString(radix)を使うと、数値(Int)を任意の基数の文字列表現に変換できる。
val num = 255
println(num.toString(2))
println(num.toString(8))
println(num.toString(16))
Output:
11111111
377
ff
JavaのIntegerクラスにあるtoBinaryString、toOctalString、toHexStringメソッドと似たように使えるが、負の値を指定すると結果が異なる点に注意する必要がある。
val num = -255
println(num.toString(2))
println(num.toString(8))
println(num.toString(16))
println(Integer.toBinaryString(num))
println(Integer.toOctalString(num))
println(Integer.toHexString(num))
Output:
11111111
-377
-ff
11111111111111111111111100000001
37777777401
ffffff01