문자열과 숫자 변환 (toIntOrNull, toInt)
문자열(String) → 숫자(Int)
Kotlin은 String 클래스에 toIntOrNull() 확장 함수를 정의하며, 이를 사용하면 모든 문자열을 숫자형(Int)으로 변환할 수 있습니다. 이름에서 알 수 있듯이 변환할 수 없는 문자열의 경우 null 을 반환합니다.
Kotlin은 String
클래스에 toIntOrNull()
확장 함수를 정의하고 있으며, 이를 사용하면 임의의 문자열을 숫자형(Int
)으로 변환할 수 있다. 함수명에서 알 수 있듯이 변환할 수 없는 문자열의 경우 null
을 반환한다.
val num1 = "100".toIntOrNull() // 100
val num2 = "abc".toIntOrNull() // null
String#toIntOrNull()
의 파라미터에는 기수(radix)를 지정할 수 있어서, 아래와 같이 2진수 표기나 16진수 표기의 문자열을 구문 분석할 수도 있다.
val num1 = "10000000".toIntOrNull(2) // 128
val num2 = "FFFF".toIntOrNull(16) // 65535
val num3 = "0xFFFF".toIntOrNull(16) // 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)) // "11111111"
println(num.toString(8)) // "377"
println(num.toString(16)) // "ff"
Java의 Integer
클래스에 있는 toBinaryString
, toOctalString
, toHexString
과 유사하게 사용할 수 있지만, 음수를 지정하면 결과가 달라진다는 점에 주의해야 한다.
val num = -255
println(num.toString(2)) // "-11111111"
println(num.toString(8)) // "-377"
println(num.toString(16)) // "-ff"
println(Integer.toBinaryString(num)) // "11111111111111111111111100000001"
println(Integer.toOctalString(num)) // "37777777401"
println(Integer.toHexString(num)) // "ffffff01"
최종 수정 : 2023-12-17