2016-05-01 10 views
12

Was ich möchte wissen, ist der Code effiziente Art und Weise (in schnellen 2) zu konvertieren:Konvertieren zwischen Dezimal, Binär und Hexadezimal in Swift

  • Dezimal zu Binär
  • Binary
  • Dezimal auf Dezimal zu hexadezimal
  • hexadezimal
  • Binary auf Dezimal
  • hexadezimal zu Binary hexadezimal

Ich habe bereits einen rudimentären und langatmigen Weg, um dies zu erreichen, aber ich würde gerne einen sehr effizienten Weg finden, dies zu tun.

Sorry, wenn die Frage ist ein bisschen lang ...

+0

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

Antwort

31

Beide String und Int Konstrukteure haben, die eine radix (Basis) nehmen. Die Kombination diejenigen, können Sie alle die Conversions erzielen:

// 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

Thank you! Sehr hilfreiche Informationen, also ein großes Lob an Sie ... –

+0

@vacawama, was passiert, wenn der Hex-Wert 32 Zeichen beträgt? Ich versuche, eine 32 char-database generierte GUID - zu einem int .. – rustyMagnet

+0

@ rustyMagnet zu konvertieren, würde ein 32 Zeichen Hex-Wert eine 128-Bit-Ganzzahl darstellen. Was würdest du damit machen? – vacawama