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...
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Tat
802829546
ist eindeutig falsch hier.Calc gibt eine 64-bit-Wert ohne Vorzeichen (
18191647110290852630d
).Delphi Int64-Typ verwendet höchste bit als Vorzeichen:
liefert den Wert
-255096963418698986
die richtigeWenn Sie brauchen, um die Arbeit mit Werten größer als 64-bit unterzeichnet, dann schauen Sie sich Arnaud Antwort hier.
Die Zahl ist zu groß, um dargestellt werden als vorzeichenbehaftete 64-bit Zahl.
Den größten möglichen signierten 64-bit-Wert
arbeiten mit großen zahlen, die Sie benötigen externe Bibliothek für delphi
Große zahlen in Pascal (Delphi)
Musste ich eine Delphi-Bibliothek unter dem Namen "DFF-Bibliothek", denn ich arbeite auf Delphi6 und die Art
Uint64
existiert nicht in dieser version.Hauptseite
Hier ist mein code zu transformieren, eine Zeichenfolge von hexadezimalen Wert in eine Zeichenfolge mit dezimaler Wert:
Müssen Sie
UBigIntsV3
zu Ihr verwendet in eurer Einheit.