web-dev-qa-db-ja.com

Swiftで10進数、2進数、16進数を変換

私が知りたいのは、変換する最もコード効率の良い方法です(Swift 2):

  • 10進数から2進数
  • 2進数から10進数
  • 10進数から16進数
  • 16進数から10進数
  • バイナリから16進数
  • 16進数から2進数

私はすでにこれを達成するための初歩的で長年の方法を持っていますが、非常に効率的な方法を見つけたいと思います。

質問が長すぎる場合は申し訳ありません...

19
Cobie Fisher

StringIntの両方には、radix(ベース)を取る初期化子があります。これらを組み合わせて、すべての変換を達成できます。

// 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"
48
vacawama