000
30.12.2003, 10:27 Uhr
~MaJu
Gast
|
Ich möchte von einer Decimal-Zahl in Hexadzimal umwandeln. Ansich rechnet erdas ja auch alles richtig so wie er das machen soll, aller dings wenn erdann die zahle übersetzt in Zeichen, giebt er mir immer nur ein einzges zeichen zurück.
zum bsseren verstehen hier quellcode: (VC++)
| C++: |
// Dies ist Funktion wenn der Button betätigt wird und // dann in die eigentliche funktion verschwidet!
void main_class::OnTohex() { UpdateData(TRUE); SetDlgItemText(IDC_OUT, umw.dtoh(25)); }
|
| C++: |
// Die function die fr alles verantwortlich ist:
char * umwandeln::dtoh(double dec) { strcpy(hex, "\0"); do { laenge++; tmp2=new int[laenge]; //hex=new char[laenge]; do { for(tmp=1; tmp<=15; tmp++) { erg=tmp*exp; if(erg>dec) break; } if(erg<dec) exp*=16; } while(erg<dec); if(tmp==15) { dec-=1*(exp/16); tmp2[laenge]=1; } else { dec-=(tmp-1)*exp; tmp2[laenge]=tmp-1; } exp=1; } while(dec>0); // Ab hier also in der Forschleife muss jetzt der hacken bei der sache liegen // ich weis aber nicht warum er das nicht richtig verketten tut. strcpy(hex, "\0"); for(tmp=0; tmp<=laenge; tmp++) { switch(tmp2[tmp]) { case 1: strcat(hex, "1"); break; case 9: strcat(hex, "9"); break; case 2: strcat(hex, "2"); break; case 10: strcat(hex, "A"); break; case 3: strcat(hex, "3"); break; case 11: strcat(hex, "B"); break; case 4: strcat(hex, "4"); break; case 12: strcat(hex, "C"); break; case 5: strcat(hex, "5"); break; case 13: strcat(hex, "D"); break; case 6: strcat(hex, "6"); break; case 14: strcat(hex, "E"); break; case 7: strcat(hex, "7"); break; case 15: strcat(hex, "F"); break; case 8: strcat(hex, "8"); break; case 0: strcat(hex, "0"); break; } /* switch(tmp2[tmp]) { case 1: hex[tmp]='1'; break; case 9: hex[tmp]='9'; break; case 2: hex[tmp]='2'; break; case 10: hex[tmp]='A'; break; case 3: hex[tmp]='3'; break; case 11: hex[tmp]='B'; break; case 4: hex[tmp]='4'; break; case 12: hex[tmp]='C'; break; case 5: hex[tmp]='5'; break; case 13: hex[tmp]='D'; break; case 6: hex[tmp]='6'; break; case 14: hex[tmp]='E'; break; case 7: hex[tmp]='7'; break; case 15: hex[tmp]='F'; break; case 8: hex[tmp]='8'; break; case 0: hex[tmp]='0'; break; } //hex[tmp+1]='\0'; */ } ofstream out; out.open("hex.txt", ios::out); out << hex << endl; out.close(); return hex; }
|
Die Headerdatei für die classe ist richtig initiert aber wenn es hilft hier der code:
| C++: |
class umwandeln { private: int tmp, *tmp2, laenge; double dec, exp, erg; char hex[255]; public: umwandeln() { exp=laenge=1; }; ~umwandeln(); char * dtoh(double dec); double htod(char *hex); protected: };
|
Ich knauble immer noch seit 4 wochen dran rum hoffe das mir endlich mal jemand helfen kann!  |