String nach HEX ???
-
Formulier mal die Frage um.
Irgendwie kann man nur raten was Du möchtest.
-
so wie ich das verstehe müsste das doch mit stringstreams machbar sein.
-
also
z.b. s:
[AnsiString acb = "FF1023BBAA";
int hexwert;
/* Halt irgend ein String den ich vom
Benutzer bekommen habe Dieser String
soll aber eine Hexadezimaleingabe sein...
den ich nun in einen realen HEX(bzw int)
Wert umwandeln möchte
Wenn ich jedoch StrToInt mache ist klar das
die Integer ZUahl nicht dem realen FF1023BBAA entspricht ...
*/hexwert = StrToInt(acb);
// SO einfach ist das ja nicht da hexwert ja nun nicht dem FF1023BBAA entspricht...String Streams ???
-
Eine Hexadezimalzahl sieht so aus: 0xFFABDE345AA oder 0XFF34RHD8B
Buchstaben dürfen auch klein sein, die Funktion erkennt nicht, dass es sich um
einen Integer handelt, du musst also ein 0x davor setzen. Ich glaube dass man auch
die Basis angeben kann/muss, bin mir aber nicht sicher.
-
Ach scheisse bin ich blöed !!
{ AnsiString abc ="0xFF0011"; Edit1->Text = IntToHex(StrToInt(abc),2); }
Und Siehe Da es funktioniert ^^
Mach das war ja einfach .....
ich hatte schon wie wild mit Pointern herumgetüftelt ^^
Danke für eure Hilfe !
-
AJ2000, könntest du dein Problem denn mit Papier und Bleistift lösen?
-
Das ist kein Standard-C++
-
@Taurin
hmm? was willst du mir denn damit nun sagen??Jo ich weiss hatte gerade nur den Borland CPP 6.0 zur Hand gehabt ... sollte eigendlich ne ConsolenAnwendung werden ... aber jetzt hab ich ja schonmal ne Möglichkeit...
-
Hi,
ich habe mir mal erlaubt in meinem SnippetFolder zu suchen bis ich das hier wiedergefunden habe:
#include <string> const char array[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; std::string ULongTohex(unsigned long data) { unsigned long length = 0; if(data < 0xFF ) length = 2; else if(data < 0xFFFF && length != 2) length = 4; else if(data < 0xFFFFFF && length != 4) length = 6; else if(data < 0xFFFFFFFF && length != 6) length = 8; unsigned int reverse_counter = length; unsigned int *counter = new unsigned int[length]; unsigned int temp = 0; char *hex = new char [length+1]; for (unsigned int i= 0; i < length; i++) { temp = data % 16; data /= 16; data-temp; counter[i] = temp; } for(unsigned int i = 0; i< length ; i++) { hex[--reverse_counter] = (char)array[counter[i]]; } hex[length] = '\0'; std::string ret_val = hex; delete hex; return ret_val; } unsigned long hexToULong(char *data) { unsigned hex_length = std::strlen(data); unsigned long return_value = 0; for(unsigned int i = 0; i < hex_length; i++) { for(unsigned char j = 0; j < 16; j++) { if(data[i] == array[j]) { return_value = ((return_value * 16) + j); } } } return return_value; }
Das habe ich mal selbst geschrieben das sind 2 Funktionen die diese Konvertierungen vornehmen.
Ist vielleicht noch optimierbar aber sollte zu anschauungszwecken ausreichen.MfG
eViLiSSiMo
-
AJ2000 schrieb:
Ach scheisse bin ich blöed !!
{ AnsiString abc ="0xFF0011"; Edit1->Text = IntToHex(StrToInt(abc),2); }
Einen Hexwert in einen Int wandeln, dann diesen in eine Hexzahl ?
-
nein, string->int->hex