2015-02-20 11 views
10

Scusate se questo sembra davvero semplice, non riesco a trovarlo da nessuna parte online.esadecimali - Swift

Ho un UInt8 in esadecimale, ho bisogno di ottenerlo in un decimale. Come posso raggiungere questo in fretta?

Ad esempio:

"ff"

Grazie

+1

possibile duplicato di [Come convertire il numero esadecimale a bin a Swift?] (Http://stackoverflow.com/ domande/26284223/how-to-convert-hex-number-to-bin-in-swift) – Amadan

+0

(se per "decimale" si intende un vero 'UInt8' come' 255', e non un'altra stringa con la rappresentazione decimale, ' "255" '). – Amadan

+0

Ho bisogno di un UInt8 vero – JoeBayLD

risposta

27

Se si dispone di una rappresentazione di stringa, "ff", è possibile utilizzare UInt8(_:radix:):

let string = "ff" 
if let value = UInt8(string, radix: 16) { 
    print(value) 
} 
+0

Quest'ultimo funziona, tranne una cosa. Tutti gli Ints sono corretti tranne lo 0. Ritorna nullo invece di 0 e salta a 1. Idee? – JoeBayLD

+0

L'ho risolto. Il problema era var value: UInt8 !. Ho fatto il valore var: UInt8 = 0. Ora funziona. – JoeBayLD

+0

Buona presa. Ho aggiornato la mia risposta di conseguenza. Grazie! – Rob

2

è possibile utilizzare la funzione di strtoul per convertire il vostro esadecimale a decimale:

let result = UInt8(strtoul("ff", nil, 16)) // 255 
+0

Che funziona. Un'altra cosa. Se stampo il mio NSData è . Posso convertire in stringa e rimuovere il primo e l'ultimo carattere. Ma è il modo migliore per farlo? – JoeBayLD

+0

Lo farà. Grazie – JoeBayLD

+0

sei il benvenuto –

0

Prova questo codice, è lavoro per me.

// Hex decimale

let h2 = "ff" 
let d4 = Int(h2, radix: 16)! 
print(d4) 

Spero che questo è di aiuto per qualcuno

Problemi correlati