Ich möchte wissen, wie man eine Hex-Zeichenfolge, die eine Zahl darstellt, in Objective-C analysiert. Ich bin bereit, sowohl eine objektive als auch eine C-basierte Methode zu verwenden.
Beispiel:
#01FFFFAB
sollte in die ganze Zahl analysieren: 33554347
Jede Hilfe wäre dankbar!
0x
(oder0X
) beginnt . NSScanner akzeptiert diese Präfixe.Sie verwenden können NSScanner für diese
outVal
enthält das int, das Sie suchen. Das 0x ist optional.quelle
strtol () ist dein Freund.
Es konvertiert eine Zeichenfolge in eine lange, und Sie können die Basis der Zahl in übergeben. Entfernen Sie das # -Zeichen jedoch zuerst oder übergeben Sie einen Zeiger auf das erste numerische Zeichen.
quelle
strtol
Funktion ist auch viel milder. Schreiben Sie gründliche Komponententests (einschließlich Leerzeichen, nicht hexadezimale Zeichen usw.), da Sie einige überraschende Randfälle finden, überNSScanner
die Sie mehr Kontrolle haben.Sie können die folgende Zeile für die Konvertierung verwenden. Es ist nur ein Zeilencode:
Viel Spaß beim Codieren !!!
quelle
0x
(oder0X
) oder +/- oder anderen Zeichen beginnt , die in Ihrer Eingabe nicht als gültig angesehen werden.In der Swift 4- Standardbibliothek wurde ein neuer Initialisierer zum Parsen aller Ganzzahltypen eingeführt. Zum Parsen mit radix (dh base) ist ein String erforderlich, und es wird eine optionale Ganzzahl zurückgegeben:
quelle
Laut Apfel:
NSData
Also , wenn du ein Objekt hast, kannst du es als nächstes tunquelle
0x
(oder0X
) oder anderen Zeichen beginnt , die in Ihrer Eingabe nicht als gültig angesehen werden, aber von NSScanner akzeptiert werden.Für Swift 3:
quelle