Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Algorithmus zum Umrechnen Hex->Real (80Bit mit Vorz) gesucht (https://www.delphipraxis.net/34316-algorithmus-zum-umrechnen-hex-real-80bit-mit-vorz-gesucht.html)

Garfield 21. Nov 2004 00:15


Algorithmus zum Umrechnen Hex->Real (80Bit mit Vorz) gesu
 
Moin,

ich will die Daten einer Binärdatei auslesen. Die 8-, 16- und 32-Bit-Zahlen funktionieren mit StrToInt, aber mehr geht da nicht. Die Suche hilft bei diesem vorzeichenbehafteten Datentyp mit 80-Bit nicht weiter. Ein paar Zahlenbeispiele:

Code:
00 00 00 00 00 00 00 A0 03 C0 = -20
00 00 00 00 00 00 00 F0 02 C0 = -15
00 00 00 00 00 00 00 A0 02 C0 = -10
00 00 00 00 00 00 00 A0 01 C0 =  -5
00 00 00 00 00 00 00 80 01 C0 =  -4
00 00 00 00 00 00 00 C0 00 C0 =  -3
00 00 00 00 00 00 00 80 00 C0 =  -2
00 00 00 00 00 00 00 80 FF BF =  -1
00 00 00 00 00 00 00 00 00 00 =   0
00 00 00 00 00 00 00 80 FF 3F =   1
00 00 00 00 00 00 00 80 00 40 =   2
00 00 00 00 00 00 00 C0 00 40 =   3
00 00 00 00 00 00 00 80 01 40 =   4
00 00 00 00 00 00 00 A0 01 40 =   5
00 00 00 00 00 00 00 A0 02 40 =  10
00 00 00 00 00 00 00 F0 02 40 =  15
00 00 00 00 00 00 00 A0 03 40 =  20
00 00 00 00 00 00 00 F0 03 40 =  30
00 00 00 00 00 00 00 A0 04 40 =  40
00 00 00 00 00 00 00 C8 04 40 =  50
00 00 00 00 00 00 00 CA 04 40 =  50.5
33 33 33 33 33 33 33 CA 04 40 =  50.55
52 B8 1E 85 EB 51 38 CA 04 40 =  50.555
00 00 00 00 00 00 00 C8 05 40 = 100
00 00 00 00 00 00 00 96 06 40 = 150
00 00 00 00 00 00 00 C8 06 40 = 200
00 00 00 00 00 00 00 96 07 40 = 300
Vielleicht kennt hier jemand eine Lösung.

DaFox 21. Nov 2004 03:20

Re: Algorithmus zum Umrechnen Hex->Real (80Bit mit Vorz)
 
Hi!

Hab' nichts zur Hand, sorry. Aber Du sprichst wohl von double-extended precision Gleitkommazahlen!? 64 Bit Mantisse, 15 Bit Exponent. Siehe S. 3/15.

Gruß,
Markus

Garfield 21. Nov 2004 07:34

Re: Algorithmus zum Umrechnen Hex->Real (80Bit mit Vorz)
 
Vielen Dank. Damit habe ich einen Ansatzpunkt. Bei dem Beispiel
Code:
52 B8 1E 85 EB 51 38 CA 04 40 =  50.555
hieße es dann, dann
Code:
52 B8 1E 85 EB 51 38 CA
die Mantisse mit 50555 und
Code:
04 40
der Exponent -3 und das Vorzeichen + sein müssten.

Wenn ich mir
Code:
00 00 00 00 00 00 00 80 01 40 =   4
00 00 00 00 00 00 00 A0 01 40 =   5
ansehe, scheint es doch nicht so zu passen, wie ich denke.

Garfield 21. Nov 2004 15:04

Re: Algorithmus zum Umrechnen Hex->Real (80Bit mit Vorz)
 
In WinHex werden die Werte unter Datentyp 'Long Double' und Einstellung 'Little Endian' richtig angegeben.

Garfield 21. Nov 2004 18:24

Re: Algorithmus zum Umrechnen Hex->Real (80Bit mit Vorz)
 
Problem gelöst. Hatte mich bei der Variblendeklaration verschrieben (Extented statt Extended) und dann gedacht, Delphi 3 kann kein Extended. Die 10 Bytes werden am Stück geladen und von Delphi richtig weiterverarbeitet. :oops:

Code:
var fs : TFilestream;
    er : Extended;

...
fs.Read (er, 10);
...
Danke für die Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 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