2016-05-01 33 views
12

Những gì tôi muốn biết là cách hầu hết các mã hiệu quả để chuyển đổi (trong nhanh chóng 2):Chuyển đổi giữa số thập phân, nhị phân và thập lục phân trong Swift

  • Decimal để Binary
  • nhị phân để thập phân
  • Decimal để hexadecimal
  • hexadecimal để thập phân
  • Binary để hexadecimal
  • hexadecimal để Binary

Tôi đã có một cách thô sơ và lâu dài để đạt được điều này, nhưng tôi muốn tìm ra một cách rất hiệu quả để làm điều đó.

Xin lỗi nếu câu hỏi là một chút dài ...

+0

https://stackoverflow.com/q/45667905/3908884 –

Trả lời

31

Cả StringInt có nhà xây dựng mà phải mất một radix (cơ sở). Kết hợp những thứ đó, bạn có thể đạt được tất cả các chuyển đổi:

// 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" 
+0

Cảm ơn bạn! Thông tin rất hữu ích, vì vậy Kudos cho bạn ... –

+0

@vacawama, điều gì sẽ xảy ra nếu giá trị Hex là 32 ký tự? Tôi đang cố gắng để chuyển đổi một 32 char -database tạo GUID - một int .. – rustyMagnet

+0

@rustyMagnet, một giá trị hex 32 ký tự đại diện cho một số nguyên 128-bit. Bạn sẽ làm gì với điều đó? – vacawama

Các vấn đề liên quan