2010-05-15 8 views
5

Hat jemand ein Code-Snippet oder eine Klasse, die lange dauert und es in eine 16-Byte-Hex-Zeichenfolge verwandelt?Objective-C Dezimal zu Base 16 Hexadezimalkonvertierung

Ich suche Daten wie diese

long long decimalRepresentation = 1719886131591410351; 

und es in diesem

//Base 16 Hex Output: 17DE435307A07300 

Die% x Operator drehen will nicht

NSLog(@"Hex: %x",decimalRepresentation); 
//console : "Hex: 7a072af" 
für mich arbeiten

Wie Sie sehen können, ist das nicht einmal in der Nähe. Jede Hilfe wird wirklich geschätzt!

Antwort

10

%x druckt eine vorzeichenlose Ganzzahl in hexadezimaler Darstellung und sizeof(long long) != sizeof(unsigned). Siehe z.B. "Data Type Size and Alignment" im 64-Bit-Übergangshandbuch.

Verwenden Sie den ll Spezifizierer (das ist zwei Klein L), um die gewünschte Ausgabe zu erhalten:

NSLog(@"%llx", myLongLong); 
+0

Danke, das war schnell! Ich habe das noch nicht auf dem iPhone ausprobiert, weißt du, ob es auf dem iPhone-Prozessor funktioniert? – Justin

+0

Das 'printf()' Format ist gut spezifiziert, also würde ich dort keine Überraschungen erwarten. –

+0

nevmind mein schlechtes tut mir leid – Justin