c++ String to hex

10/09/2011 00:03 SandMann016#16
Quote:
Originally Posted by Medix View Post
äh rechne es einfach um dann siehst du obs stimmt!?
ich meinte die funktion die ich geschrieben habe? ob sie so oke ist... klar ist das ergebniss richtig o.O
10/09/2011 00:58 MrSm!th#17
Quote:
Originally Posted by Medix View Post
[Only registered and activated users can see links. Click Here To Register...]

und das ausgeben als hex zahl sollte ja kein problem sein sobald du den string als zahl vorliegend hast.
atoi ist keine Standardfunktion.

strtol ist schöner.

Aber du kannst es auch gleich mit std::cin und dem Operator std::hex als eine hexadezimale Zahl interpretieren.


Wie schon gefragt wurde: Warum postet ihr C oder gar Asm? :O

@Shadow:

1. Warum erwartest du nur ein Char? Damit kann man gerade mal Zahlen bis 255 in Hex umwandeln und hier geht es um Adressen.
2. Warum ist dein buf 5 chars groß? Für 255 in Hex bräuchtest du gerade mal 3 Chars. Du Speicherplatzverschwender!
3. Warum gibst du bitte wieder einen String zurück? :confused: Er einen String als Hex Zahl interpretieren und in eine int Variable speichern.

Quote:
//In IRGENTWASS steht: 1701EC5 (das 0x ist hierbei nicht dabei, aber ist auch völlig egal...)

//Stimmts?
In IRGENDWASS steht gar nichts, das ist eine int Variable. Da sind ein paar 1en und 0en drin, um genau zu sein 32.
Als hexadezimale Zahl interpretiert in einem String ausgegeben steht da (falls deine Umrechnung richtig ist) 1701EC5, ja. Ob ein 0x davor steht, hängt davon ab, ob die betreffende interpretierende Funktion es voranstellt oder nicht.

Quote:
return IntToHex(atoi(buf), 0);
Das ist absoluter Blödsinn. Es gibt keine Konvertierung von int zu Hex. Eine hex Zahl ist genau so mit einem int speicherbar.
Hex ist nur eine andere Art es darzustellen. Mich würde mal interessieren, wie deine IntToHex aussieht o.O
10/09/2011 01:08 link#18
C oder C++ ist doch schnuppe und Asm kann man doch inlinen :>

Btw. Wieso soll atoi keine Standardfunktion sein?
"The atoi, atof, and atol functions are a part of the ISO standard C library (C89), while the atoll function is added by C99."
10/09/2011 10:04 SandMann016#19
Quote:
Originally Posted by MrSm!th View Post
Mich würde mal interessieren, wie deine IntToHex aussieht o.O
[Only registered and activated users can see links. Click Here To Register...]

Ich kann zwar kein C++, aber ich weiß das mein kleiner Code gehen würde!
Ein int kann man als dezimal,hex,okt,bin usw ausgeben lassen und normalerweise ist das dezimal
bsp.: int bla = 0x9 * 0x9;
wenn man this->Caption = bla; machen würde wäre die Caption 81 und nicht 0x51 das ist glaube ich standart so. Und in der SysUtils.pas war schon diese funktion wie man das zu einer hex zahl ausgibt...d.h. this->Caption = IntToHex(bla,0);

Ich kann kein c++ also verurteilt mich nicht wenn alles nur quatsch ist, aber es funktioniert!
10/09/2011 11:22 xNopex#20
Code:
int bla = 123;

std::cout << std::hex << bla;
Gut' nacht.

EDIT: Nächstes mal lese ich mir den Thread vorher durch und poste dann. sry.
10/12/2011 15:34 MrSm!th#21
Quote:
Originally Posted by link View Post
C oder C++ ist doch schnuppe und Asm kann man doch inlinen :>

Btw. Wieso soll atoi keine Standardfunktion sein?
"The atoi, atof, and atol functions are a part of the ISO standard C library (C89), while the atoll function is added by C99."
Es ist nicht schnuppe, sondern ein scheiß Stil.

Ich kann den Thread nochmal raussuchen, afaik ist strtol standard, atoi nicht.

Quote:
Originally Posted by SandMann016 View Post
[Only registered and activated users can see links. Click Here To Register...]

Ich kann zwar kein C++, aber ich weiß das mein kleiner Code gehen würde!
Ein int kann man als dezimal,hex,okt,bin usw ausgeben lassen und normalerweise ist das dezimal
bsp.: int bla = 0x9 * 0x9;
wenn man this->Caption = bla; machen würde wäre die Caption 81 und nicht 0x51 das ist glaube ich standart so. Und in der SysUtils.pas war schon diese funktion wie man das zu einer hex zahl ausgibt...d.h. this->Caption = IntToHex(bla,0);

Ich kann kein c++ also verurteilt mich nicht wenn alles nur quatsch ist, aber es funktioniert!
Wenn du kein C++ kannst dann lass es!

Nur weil es funktioniert, ist es nicht gleich richtig.

Und du hast es doch erkannt! Das gilt für die Ausgabe! Also dass eine Zahl als String dargestellt wird. Natürlich muss man da angeben, in welchem Format der String aufgebaut sein soll.
Aber hier geht es darum, einen String als Zahl zu interpretieren und in einen int zu speichern!
Da nutzt man eine Interpretationsfunktion wie atoi und def gibt man das Wunschformat mit oder sie erkennt es selbst.
Der Output ist dann eine binäre Zahl, da gibt es nichts mehr zu konvertieren!
Deine Lösung würde auch ohne den IntToHex scheiß funktionieren.

Und Vcl ist doch .NET in C++ oder? Pfui, lass das!
10/12/2011 16:46 link#22
"Es ist nicht schnuppe, sondern ein scheiß Stil."
Lass mich das in mein rosa Notizbuch schreiben *hust*

"[...] atoi nicht."
Ja, wieso denn nicht? Da steht doch, dass es seit C89 zur C-Lib gehört.
Und soweit ich weiß, ist die C-Lib der Standard.

VCL ist eine Runtime-Bibliothek von Borland (sprich von Delphi und dem C++ Builder)
10/12/2011 20:35 MrSm!th#23
Alles klar, entschuldigung, dachte es wäre cli.

Ich sagte schon, ich muss erst einmal den Thread raussuchen.
Kann auch sein, dass der etwas älter ist und damals atoi noch nicht zum Standard gehörte (trotzdem wurden da noch andere Nachteile besprochen).
Meines Wissens war atoi doch ne Funktion aus dem ms sdk oder nicht?

btw. er hat explizit nach c++ gefragt und der c++ Weg ist in diesem Fall schneller, kürzer, einfacher, besser zu lesen und eine besser zur Frage passende Antwort als der restliche Kram, der hier geposted wurde.
10/13/2011 01:04 scbiz#24
Keine Ahnung wie du darauf kommst, dass atoi nicht zum C89/90 Standard gehört (s. [Only registered and activated users can see links. Click Here To Register...])...
10/13/2011 14:22 MrSm!th#25
Sagte ich das? Nein.