![]() |
Hex-Wert in Delphi übernehmen
Hallo zusammen,
ich möchte ein Python Script nach Delphi übersetzen. Das funktioniert auch soweit sehr gut. Ich habe nur ein Problem mit dem folgenden Hex-Wert Zitat:
Zitat:
|
AW: Hex-Wert in Delphi übernehmen
Floating point, d.h. double vielleicht?
|
AW: Hex-Wert in Delphi übernehmen
Wie soll mir das weiterhelfen ? Ich verstehe Deinen Post nicht.
|
AW: Hex-Wert in Delphi übernehmen
Die Anzeige deutet auf einen Hexwert hin.
Du musst den Hexstring wohl zerlegen, um ihn in einen Float zu wandeln. Oder auf dem Umweg über einen Dezimalstring: ![]() |
AW: Hex-Wert in Delphi übernehmen
Nix verstehen.
Floats sind hier nicht im Spiel: Zitat:
![]() Das sind doch normale Ganzzahlen (verdammt große), oder? Passt das überhaupt noch in einen Int64? |
AW: Hex-Wert in Delphi übernehmen
Zitat:
Hinter dem Wert kommen noch 52 Nullen, mit 53 würde es fast hinkommen, aber das Leerzeichen in dem Wert irritiert mich. |
AW: Hex-Wert in Delphi übernehmen
Zitat:
Ich verstehe irgendwie immer noch nichts. Kann mir bitte jemand anhand eines Beispiels erklären, wie ich den Hex-Wert in einer Berechnung übergeben muss ? |
AW: Hex-Wert in Delphi übernehmen
Also eigentlich sieht der Wert für mich aus wie:
Delphi-Quellcode:
Aber das sind ja 6,5535E56.
const
a: Double = $00000000ffff * 10000000000000000000000000000000000000000000000000000.0; // bzw. const a: Double = $00000000ffff * 1E52; |
AW: Hex-Wert in Delphi übernehmen
Der Wert ist ein riesen Otto, der geht gewiss nicht in einen Int64.
0000 0000 ffff 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 32 Bit + 32 Bit + 32 Bit + 32 Bit + 32 Bit + 32 Bit + 32 Bit + 32 Bit = 256 Bit (@jaenicke: Warum sollten die Nullen nach den F's auf ein Mal dezimal sein?) Da Delphi keinen 256 Bit Integer kennt, bleibt nur die Umwandlung in einen Fließkommawert, wobei aber Genauigkeit flöten geht. Potenziell hier sogar ohne viel Verlust (zumindest binär gesehen) wegen der vielen Nullen hinten dran. Die Ausgabe von Python deutet z.B. darauf hin, dass der Wert zumindest für die Anzeige ein Mal durch einen Float-Wert geschleift wurde. Ob das so gehört, oder eine Grenze von Python ist, weiss ich nicht. Ich weiss nur, dass man ohne 3rd Party Libs bzw. entsprechende Handarbeit solche Werte nicht einfach so in einem Delphiprogramm nutzen kann - ausser eben wie o.g. als Fließkommazahl. Ob das in dem Fall eine Option ist, hängt davon ab was damit nachher noch alles passieren muss, das können wir hier nicht einschätzen. |
AW: Hex-Wert in Delphi übernehmen
Zitat:
Delphi-Quellcode:
Aber es sind ja 16 Bytes (war vorhin zu faul zum lesen, mal wieder). Ergo vielleicht so
Type
TDoubleConversion = record case boolean of false : (asDouble : Double); true : (asBytes : Array [0..7] Of Byte); End; var X : TDoubleConversion; Begin x.AsBytes := HexStringToByteArray(yourHexStringHere); writeln(x.asDouble); End;
Delphi-Quellcode:
TExtendedConversion = record
case boolean of false : (asExtended : Extended); true : (asBytes : Array [0..15] Of Byte); End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz