Kotlin 문자열을 정수로 변환하기

문자열을 정수로 변환하고, 정수를 문자열로 변환하는 방법에 대해 소개한다.

ss

문자열(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



최종 수정 : 2024-09-18