Преобразование между десятичными, двоичными и шестнадцатеричными в Swift

То, что я хочу знать, - это наиболее эффективный код для конвертирования (в swift 2):

  • Decimal to Binary
  • Двоичный в десятичный
  • Десятичное число до шестнадцатеричного
  • Шестнадцатеричный до десятичного
  • Двоичные для шестнадцатеричных
  • Шестнадцатеричный в двоичный

У меня уже есть рудиментарный и длинный способ достижения этого, но я хотел бы найти очень эффективный способ сделать это.

Извините, если вопрос немного длинный...

Ответ 1

Оба String и Int имеют конструкторы, которые принимают a radix (base). Объединяя их, вы можете достичь всех преобразований:

// Decimal to binary
let d1 = 21
let b1 = String(d1, radix: 2)
print(b1) // "10101"

// Binary to decimal
let b2 = "10110"
let d2 = Int(b2, radix: 2)!
print(d2) // 22

// Decimal to hexadecimal
let d3 = 61
let h1 = String(d3, radix: 16)
print(h1) // "3d"

// Hexadecimal to decimal
let h2 = "a3"
let d4 = Int(h2, radix: 16)!
print(d4) // 163

// Binary to hexadecimal
let b3 = "10101011"
let h3 = String(Int(b3, radix: 2)!, radix: 16)
print(h3) // "ab"

// Hexadecimal to binary
let h4 = "face"
let b4 = String(Int(h4, radix: 16)!, radix: 2)
print(b4) // "1111101011001110"