2016-05-01 91 views
12

Co chcę wiedzieć jest najbardziej Kod skuteczny sposób przekonwertować (w Swift 2):Konwersja między dziesiętny, binarny i bajt w Swift

  • dziesiętny na binarny
  • systemu binarnego na dziesiętny
  • Decimal na szesnastkowe
  • szesnastkowy na dziesiętny
  • binarnego do szesnastkowy
  • szesnastkową na Binary

Mam już elementarny i rozwlekły sposób osiągnięcia tego celu, ale chciałbym się dowiedzieć, jak to zrobić.

Przepraszam, jeśli pytanie jest nieco długa ...

+0

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

Odpowiedz

31

Zarówno String i Int mieć konstruktorów, które podejmują radix (baza). Łącząc te można osiągnąć wszystkie konwersje:

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

Dziękujemy! Bardzo pomocne informacje, więc Kudos do ciebie ... –

+0

@vacawama, co się stanie, jeśli wartość Hex wynosi 32 znaków? Próbuję przekonwertować wygenerowany GUID 32-databases - do int .. – rustyMagnet

+0

@rustyMagnet, 32-znakowa wartość szesnastkowa reprezentowałaby 128-bitową liczbę całkowitą. Co byś z tym zrobił? – vacawama