Ich habe ein Problem, eine String-Repräsentation eines Hexadezimalwertes in Integer-Wert mit Delphi zu konvertieren.
zum Beispiel:
%Vor%$ FC75B6A9D025CB16 gib mir 802829546, wenn ich die Funktion verwende:
Aber wenn ich das calc-Programm von Windows verwende, ist das Ergebnis: 18191647110290852630
Meine Frage ist also: Wer hat Recht? mir oder dem Kalkül?
Hat jemand schon diese Art von Problem?
Ich musste eine Delphi-Bibliothek namens "DFF-Bibliothek" verwenden, weil ich an Delphi6 arbeite und der Typ Uint64
in dieser Version nicht existiert.
Hauptseite
Hier ist mein Code, um eine Zeichenfolge mit hexadezimalem Wert in eine Zeichenfolge mit Dezimalwert umzuwandeln:
Sie müssen UBigIntsV3
zu Ihren Verwendungen in Ihrer Einheit hinzufügen.
Tatsächlich ist 802829546
hier eindeutig falsch.
Calc gibt einen vorzeichenlosen 64-Bit-Wert zurück ( 18191647110290852630d
).
Der Delphi Int64-Typ verwendet das höchste Bit als Vorzeichen:
%Vor% gibt den Wert -255096963418698986
zurück, der korrekt ist
Wenn Sie mit Werten arbeiten müssen, die größer als 64 Bit sind, dann lesen Sie Arnauds Antwort hier .
Die Nummer ist zu groß, um als 64-Bit-Zahl mit Vorzeichen dargestellt zu werden.
%Vor%Der größtmögliche vorzeichenbehaftete 64-Bit-Wert ist
%Vor%Tags und Links delphi valueconverter hex decimal delphi-6