Konvertiere Hexadezimalzahl in Delphi in Dezimalwert

8

Ich habe ein Problem, eine String-Repräsentation eines Hexadezimalwertes in Integer-Wert mit Delphi zu konvertieren.

zum Beispiel:

  

$ FC75B6A9D025CB16 gib mir 802829546, wenn ich die Funktion verwende:

%Vor%

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?

    
Simon Mardiné 12.12.2012, 14:34
quelle

4 Antworten

2

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.

%Vor%     
Simon Mardiné 13.12.2012, 14:48
quelle
10

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 .

    
whosrdaddy 12.12.2012 14:56
quelle
7

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%     
Andreas Rejbrand 12.12.2012 14:37
quelle
3

Um mit großen Zahlen zu arbeiten, benötigen Sie eine externe Bibliothek für Delphi

Große Zahlen in Pascal (Delphi)

    
shibormot 12.12.2012 14:44
quelle