Forum: PC-Programmierung c# printf ausgabe einer hex zahl mit -


von Luca (Gast)


Lesenswert?

Habe hier eine einfaches Programm. Dennoch stellt sich ein Problem. Ich 
würde gerne die eingegebene Dezimalzahl in Hex ausgeben. Dies ist kein 
Problem aber ich will die Zahl so darstellen.

00-00-00-00

Wie erreiche ich dies. Danke für eure Hilfe.

Freundliche Grüsse

Luca

printf("Geben Sie eine Ganzzahl ein.");

printf("\n\n\nGanzzahl:\t");
scanf("%d",&ganzzahl);

printf("Ausgabe:\t       %.8X ",ganzzahl);


jetzige Ausgabe: 00000000
Möchte also einfach alle zwei Zeichen einen Trennstrich (Minus).

von Timmo H. (masterfx)


Lesenswert?

Es gibt bestimmt mit C# auch elegantere Lösungen als mit printf, aber in 
C würde ich es vielleicht spontan so machen:
1
printf("%02X-%02X-%02X-%02X",zahl>>24 & 0xFF, zahl>>16 & 0xFF, zahl>>8 & 0xFF,zahl & 0xFF);

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

Veruch mal so:
printf("%X-%X-%X-%X", (ganzzahl>>24)&0xff, (ganzzahl>>16)&0xff, 
(ganzzahl>>8)&0xff, ganzzahl&0xff );

Edit: Ein paar Sekunden zu langsam ;)

von Markus Volz (Gast)


Lesenswert?

Der Ansatz, den int mit Hilfe von Bit-Shifts in 4 bytes zu zerlegen, ist 
prinzipiell richtig, aber...

Soll es nun C oder C# sein? Bei letzterem gibt es in den 
Standard-Bibliotheken kein printf zur Ausgabe in die Console. Die 
geeignete Methode unter C# ist System.Console.Write bzw. ...WriteLine.

Formatierungen leisten diese Methoden aber nicht. Hier könnte man z.B. 
System.String.Format verwenden:

byte bp,b1,b2,b3;
string s = string.Format("{0:X2}-{1:X2}-{2:X2}-{3:X2}",b0,b1,b2,b3);

Gruß
Markus

von Luca (Gast)


Lesenswert?

Danke für die schnelle und gute Hilfe funktioniert alles Wunderprächtig. 
Wünsche euch allen noch ein schönes Wochenende.

Freundliche Grüsse

Luca

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.