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