Ich habe eine Funktion, die ein bekommt unsigniert lang Variable als Parameter und ich möchte es in Hex drucken.
Was ist der richtige Weg, es zu tun?
Derzeit verwende ich Druckf mit “%lx”
void printAddress(unsigned long address) {
printf("%lx\n", address);
}
Soll ich nach einem Printf-Muster suchen? ohne Vorzeichen langer Hex? (und nicht nur “long hex” wie oben erwähnt)
Oder tut Druckf Konvertieren Sie Zahlen nur mit den Bits in Hex? – also sollte mir das Schild sowieso egal sein?
Bearbeiten/Klarstellung
Diese Frage wurzelte in a Verwirrtheit: hex ist nur eine andere Ausdrucksweise Bits, was bedeutet, dass die Zahl mit Vorzeichen/Vorzeichen nur eine Interpretation ist. Die Tatsache, dass der Typ ist ohne Vorzeichen long verändert also nicht die Hex-Ziffern. Unsigned sagt Ihnen nur, wie Sie dieselben Bits in Ihrem Computerprogramm interpretieren.
Bitte konsultieren Sie die freundliche Dokumentation.
– Kerrek SB
8. April 2015 um 8:22 Uhr
Mit welchem Problem haben Sie es zu tun
%lx
? Dies sollte für ein unsigned long in Ordnung sein. Natürlich, wenn Ihraddress
Parameter ist wirklich eine Adresse, dann sollten Sie ihn wahrscheinlich als übergebenvoid *
und damit drucken%p
.– PaulR
8. April 2015 um 8:26 Uhr
Was
printf
fehlt ist eine Möglichkeit zu drucken vorzeichenbehaftete Hexadezimalzahlen…– rodrigo
8. April 2015 um 8:30 Uhr
Tatsächlich sehe ich jetzt, dass in cplusplus.com sehr fett geschrieben wird, dass “x” unsigned hex ist. Du hattest recht, meine Frage ist nicht sehr hilfreich…
– Etwas etwas
8. April 2015 um 8:52 Uhr
@SomethingSomething: Wie die akzeptierte Antwort zeigt, ist sie eigentlich ganz trivial, dh das Handbuch enthält eine einfache Antwort auf Ihre Frage. Das Posten auf Stack Overflow hat nichts hinzugefügt.
– Kerrek SB
8. April 2015 um 9:26 Uhr