-
안녕하세요. 그린입니다🟢
이번 포스팅에서는 Swift에서 진수 변환하는 방법에 대해 학습하겠습니다🧑🏻💻
진수란?
얼만큼의 수를 증가시킨 후 자릿수를 올릴 것인지에 대한 단위를 말합니다.
즉, 2진수는 2개의 수를 사용하고 8진수는 8개의 16진수는 16개의 수를 사용합니다.
잘 알고 계시겠지만 기본적으로 실생활에서는 10진수 즉 10개의 0~9까지의 수를 사용하여 나타냅니다.
그렇다면, 각 진수 표현이 다른데 왜 알아야 할까요?
특히 2진수는 컴퓨터가 나타낼 수 있는 수의 범위로 2진수를 10진수로 10진수를 2진수로 변환하는 방법과 이해하는것이 중요합니다.
대표적으로 가장 많이 사용되는 2진수, 8진수, 10진수, 16진수에 대해 알아보고 각 변환하는 방법에 대해 알아봅시다!
// MARK: - 진수 변환 import Foundation let decimal: Int = 29 let binary: String = "10011" let octal: String = "234" let hexa: String = "ab1" // 10진수 -> 2진수 let binaryFromDecimal: String = String(decimal, radix: 2) print(binaryFromDecimal) // 11101 // 2진수 -> 10진수 let decimalFromBinary: Int = Int(binary, radix: 2)! print(decimalFromBinary) // 19 // 10진수 -> 8진수 let octalFromDecimal: String = String(decimal, radix: 8) print(octalFromDecimal) // 35 // 8진수 -> 10진수 let decimalFromOctal: Int = Int(octal, radix: 8)! print(decimalFromOctal) // 156 // 10진수 -> 16진수 let hexaFromDecimal: String = String(decimal, radix: 16) print(hexaFromDecimal) // 1d // 16진수 -> 10진수 let decimalFromHexa: Int = Int(hexa, radix: 16)! print(decimalFromHexa) // 2737 // 2진수 -> 8진수 let octalFromBinary: String = String(Int(binary, radix: 2)!, radix: 8) print(octalFromBinary) // 23 // 8진수 -> 2진수 let binaryFromOctal: String = String(Int(octal, radix: 8)!, radix: 2) print(binaryFromOctal) // 10011100
위와 같이 radix로 해당 진수를 변환해 줄 수 있습니다.
진수 변환 시 주의점
1. 10진수는 Int형, 나머지 진수들은 String형으로 표현됨으로 각 변환 시 주의가 필요합니다.
2. 다른진수를 10진수로 변환할때 강제추출이나 옵셔널로 선언해줘야하는데, 그 이유는 나머지 진수는 String형으로 어떤것이든 표현할 수 있지만, 10진수는 Int형으로 해당 숫자가 아닌 16진수의 a,b같은 문자가 오게되면 컴파일 에러가 발생합니다. 이에 꼭 옵셔널 바인딩 혹은 강제추출을 통해 표현해줘야합니다.
3. 10진수외 다른 진수끼리 변환 방법시에는 10진수를 꼭 거쳐 변환하여 표현해야합니다.
'Swift' 카테고리의 다른 글
Safe Array (0) 2021.07.24 ReactorKit으로 계산기 구현하기 (0) 2021.07.05 Deep copy & Shallow copy (0) 2021.05.25 패턴 (식별자, 값 바인딩, 튜플) (0) 2021.05.19 와일드카드 패턴 (3) 2021.05.18