Konvertieren hex-str-zu-dezimal-Wert in delphi

Ich hab ein problem zum umwandeln einer string-Darstellung eines hex-Wert in integer-Wert mit Delphi.

Beispiel:

$FC75B6A9D025CB16 mir 802829546 wenn ich die Funktion:

Abs(StrToInt64('$FC75B6A9D025CB16'))

aber wenn ich die calc-Programm von Windows, das Ergebnis ist: 18191647110290852630

Also meine Frage ist: wer hat Recht? mir, oder der calc?

Hat jemand schon dieses problem haben?

  • Übrigens, es ist ziemlich offensichtlich, dass 802829546 nicht richtig sein kann. Die Dezimaldarstellung einer ganzen Zahl nicht weniger Ziffern als die hexadezimale Darstellung.
  • welche delphi-version benutzt du? In Delphi XE bekomme ich 255096963418698986, die mit Ihrem code was ist das erwartete Ergebnis...
  • beginnend mit FC - es könnte werden negative Zahl ist, dann kann es kürzer sein 🙂
  • Sie brauchen, um zu konvertieren, um UInt64, ein Wert ohne Vorzeichen. Siehe Arnaud ' s die Antwort hier: stackoverflow.com/questions/11808825/...
  • Seit der OP sowohl 802829546 und 18191647110290852630 wie möglich Antworten, ich hatte den Eindruck, wir reden hier über positive ganze zahlen sind. Nachdem alle, in den meisten Anwendungen, die Sie wissen, ein Zeichen für ein Wert! Auch ich denke, dass in den meisten Fällen, wo Sie vorhanden hexadezimale zahlen über die GUI, werden Sie mit unsigned-Werten. Aber trotzdem, ich machte eine Annahme, die nicht vollständig genannt.
  • 802829546 ist das Ergebnis , wenn Sie gekürzt auf 32 bit. Hast du das speichern des Ergebnisses in eine ganze Zahl oder ein Kardinal vor der Anzeige?
  • Rob Kennedy hi, das Ergebnis gespeichert ist, in eine Ganzzahl.
  • Simon, integer ist 32 bit-Wert (Wie Rob Kennedy angegeben), so dass normal ist dann...

Schreibe einen Kommentar