ph4nt0m
Lieutenant
- Registriert
- Apr. 2004
- Beiträge
- 985
Hallo,
ich wollte gerade ein kleines Programm zum Test in C + WinApi schreiben. Es soll ganz einfach Dezimalwerte in Binärwerte konvertieren. Dabei bin ich soweit gekommen, dass durch das Divisionsverfahren die Reste der einzelnen Rechenoperationen nacheinander in ein Array gespeichert werden (hier in iTmp).
Nun müssen diese aber noch umgedreht werden, weil die Reste bei diesem Verfahren ja erst in umgekehrter Reihenfolge die Binärzahl ergeben. Ich wollte dies mit einer Schleife lösen um das letzte Element in das erste eines weiteren Arrays (hier sBin), danach das vorletzte von iTmp in das zweite von sBin usw...
Zum Schluss soll der enstehende String sBin mit Hilfe von SetDlgItemText ausgegeben werden.
Ich weiß nicht, wie ich das Invertieren hinbekommen soll, denn es scheitert schon an dem Versuch, mal probeweise nur ein Element aus dem int Array in das char Array zu kopieren (siehe vorletzte Codezeile).
Zwar meckert der Comiler nicht, aber das Ergebnis ist komisch. Ich schätze, dass beim Kopieren nicht der int Wert aus iTmp, sondern das passende ASCII Zeichen in sBin kopiert und dann auch ausgegeben wird. Ich möchte aber natürlich nur die Zahl an sich ausgeben.
Ich würde mich über Lösungsvorschläge sehr freuen
Gruß, Martin
ich wollte gerade ein kleines Programm zum Test in C + WinApi schreiben. Es soll ganz einfach Dezimalwerte in Binärwerte konvertieren. Dabei bin ich soweit gekommen, dass durch das Divisionsverfahren die Reste der einzelnen Rechenoperationen nacheinander in ein Array gespeichert werden (hier in iTmp).
Nun müssen diese aber noch umgedreht werden, weil die Reste bei diesem Verfahren ja erst in umgekehrter Reihenfolge die Binärzahl ergeben. Ich wollte dies mit einer Schleife lösen um das letzte Element in das erste eines weiteren Arrays (hier sBin), danach das vorletzte von iTmp in das zweite von sBin usw...
Zum Schluss soll der enstehende String sBin mit Hilfe von SetDlgItemText ausgegeben werden.
Code:
UINT iDec = GetDlgItemInt(hWnd, IDC_DEC, NULL, FALSE); //umzuwandelnde Dezimalzahl wird gespeichert
UINT iTmp[30];
TCHAR sBin[30];
int i = 0;
do
{
iTmp[i] = iDec % 2;
iDec /= 2;
i++;
}while(iDec > 0);
sBin[0] = iTmp[0];
SetDlgItemText(hWnd, IDC_BIN, sBin);
Ich weiß nicht, wie ich das Invertieren hinbekommen soll, denn es scheitert schon an dem Versuch, mal probeweise nur ein Element aus dem int Array in das char Array zu kopieren (siehe vorletzte Codezeile).
Zwar meckert der Comiler nicht, aber das Ergebnis ist komisch. Ich schätze, dass beim Kopieren nicht der int Wert aus iTmp, sondern das passende ASCII Zeichen in sBin kopiert und dann auch ausgegeben wird. Ich möchte aber natürlich nur die Zahl an sich ausgeben.
Ich würde mich über Lösungsvorschläge sehr freuen
Gruß, Martin