반응형
PS를 위한 문법~ 이번엔 진수 변환이다. 브론즈~실버에서 가끔 진수 변환이 필요한 문제가 있다. 물론 직접 구현해도 되지만..! 이미 라이브러리에 편하게 메소드가 있다ㅎㅎ
Int의 이니셜라이저 중에 문자열과 기수(radix)를 받아 문자열로 표현된 radix진수 → Int로 만들어주는 init(_:radix:)가 있다.
주의할 점은 변환에 실패할 수도 있기 때문에 Failable Initializer이라는 점이다. 옵셔널 타입으로 만들어주므로 옵셔널 바인딩을 하거나 강제 언래핑을 해서 사용해야 함.
init?<S>(_ text: S, radix: Int = 10) where S : StringProtocol
또 String의 이니셜라이저 중에 정수와 기수(radix)를 받아 정수 → radix진수 문자열로 만들어주는 init(_:radix:uppercase:)가 있다.
init<T>(_ value: T, radix: Int = 10, uppercase: Bool = false) where T : BinaryInteger
이 두 개를 조합해서 진수간 변환을 할 수 있다. n진수에서 m진수로 변환할 때는 String → Int → String 이렇게 중간에 한번 Int형을 거쳐주면 된다.
// 10진수 Int -> n진수 String
print(String(decimal, radix: n))
// n진수 String -> 10진수 Int
print(Int(binary, radix: 10)!)
print(Int(octal, radix: 10)!)
print(Int(hexadecimal, radix: 10)!)
// n진수 String -> m진수 String
print(String(Int(binary, radix: n)!, radix: m))
반응형
'Apple > Swift' 카테고리의 다른 글
[Swift] 문자열에서 특정 문자 한 개 또는 여러 개 제거하기 (0) | 2022.01.18 |
---|---|
[Swift] 비트 연산과 비트마스킹 (NOT, AND, OR, XOR, 시프트 등) (0) | 2022.01.17 |
[Swift] 거듭제곱하기 (0) | 2022.01.15 |
[Swift] 소수점 제거하기 (반올림, 올림, 내림, 버림 등) (0) | 2022.01.13 |
[Swift] 배열 정렬하기 (0) | 2022.01.13 |
댓글