2015-02-20 13 views
10

Przepraszam, jeśli wydaje się to naprawdę proste, po prostu nie mogę go znaleźć w Internecie.Hex do dziesiętnych - Swift

Mam UInt8 w hex, potrzebuję dostać to do dziesiętnego. Jak osiągnąć to szybko?

Na przykład:

"ff"

Dzięki

+1

możliwe duplikat [Jak konwertować liczby hex na bin w Swift?] (Http://stackoverflow.com/ pytania/26284223/how-to-convert-hex-number-to-bin-in-swift) – Amadan

+0

(jeśli "dziesiętnie" masz na myśli prawdziwy 'UInt8' jak' 255', a nie inny ciąg z dziesiętną reprezentacją, ' "255"). – Amadan

+0

Potrzebuję prawdziwego UInt8 – JoeBayLD

Odpowiedz

27

Jeśli masz reprezentację ciąg, "ff", można użyć UInt8(_:radix:):

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

Ten ostatni działa, z wyjątkiem jednej rzeczy. Wszystkie wartości Int są poprawne z wyjątkiem 0. Zwraca zero zamiast 0, a ostatnie skoki do 1. Pomysły? – JoeBayLD

+0

Naprawiłem to. Problemem była wartość var: UInt8 !. Zrobiłem to wartość var: UInt8 = 0. Teraz działa. – JoeBayLD

+0

Dobry połów. Odpowiednio zaktualizowałem swoją odpowiedź. Dzięki! – Rob

2

można użyć strtoul funkcji do konwersji hex do dziesiętnych:

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

To działa. Jeszcze jedna rzecz. Jeśli wydrukuję NSData, to jest to . Mogę konwertować na ciąg i usuwać pierwszy i ostatni znak. Ale czy to najlepszy sposób na zrobienie tego? – JoeBayLD

+0

Zrobi. Dzięki – JoeBayLD

+0

jesteś mile widziany –

0

Spróbuj tego kodu, to działa dla mnie.

// Hex na dziesiętny

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

nadzieję, że to pomaga na jakiś jeden