![]() |
Re: Dec to Hex
Ich vermute, du suchst eher soetwas:
Delphi-Quellcode:
Die FloatToHex-Routine aus dem Vorschlag oben ist eher geeignet eine Gleitkommazahl eben nicht im Binär-, sondern im Textformat mit Hexzeichen zu speichern. Als Mensch ist man beim Lesen aber nicht schlauer. Und ehrlich, gesagt frage ich mich immernoch wozu man sowohl das eine oder noch andere braucht...
uses
SysUtils, Math; function FloatToHex(const X: Double; const Digits, N: Integer): String; begin Result:=IntToHex(Trunc(X),Digits)+','+IntToHex(Round((X-Trunc(X))*Power(10,N)),N); end; |
Re: Dec to Hex
Zitat:
|
Re: Dec to Hex
Hallo,
den Namen FloatToHex() hat John Herbster etwas unglücklich gewählt - finde ich. Er liefert einfach eine sortierfähige Hex-Darstellung eines Float-Wertes, gesucht wird hier aber wohl ein Analogon zu FloatToStr(), wobei die Ausgabe zur Basis 16 anstelle zu Basis 10 erfolgen soll.
Delphi-Quellcode:
Grüße vom marabu
function FracToHex(value: Double): string;
const HEX_DIGIT = '0123456789ABCDEF'; begin Result := ''; repeat value := Frac(value) * 16; Result := Result + HEX_DIGIT[Succ(Trunc(value))]; until IsZero(value); end; function FloatToHex(d: Double): string; begin Result := Format('%x%s%s', [Trunc(d), DecimalSeparator, FracToHex(d)]); end; |
Re: Dec to Hex
Nach welcher Norm werden denn hier die Gleitkommazahlen umgewandelt? Ist das IEE?
Sieht für mich eigentlich nicht unbedingt so aus. Wozu soll das dann gut sein? Edit: Und hier noch geschwind ein Link zum Thema IEE ![]() Da in dem Artikel ein Algorithmus gezeigt, wird, wie die Umwandlung stattfindet, ist das ja auch ein brauchbarer Ansatz die Sache richtig zu machen. Sherlock |
Re: Dec to Hex
Hallo Sherlock,
deine Fragen richten sich wohl nicht an mich, sonst hättest du mich bestimmt adressiert. Trotzdem eine Bemerkung von mir: Es geht hier um ein mathematisches Problem. Die Umsetzung mathematischer Gesetze in der Digitaltechnik und ihre Normung durch das IEEE spielen da nur am Rande eine Rolle. Speziell die Konvertierung zwischen Zahlsystemen lässt sich mit Stift und Papier nach Regeln durchführen, die älter als das IEEE sind. Freundliche Grüße |
Re: Dec to Hex
Hallo Marabu,
richtig, ich habe Dich nicht angesprochen :) Ich wollte halt hören, wie die Hausaufgabe genauer formuliert ist. ;) Sherlock |
Re: Dec to Hex
An eine Hausaufgabe als mögliche Motivation für diesen Thread habe ich nicht gedacht.
Nur gut, dass ich die Vorzeichenbehandlung weggelassen habe. |
Re: Dec to Hex
Zitat:
logisch, die mathemathischen Gesetze sind ewigwährend, auch die, die der Mensch noch nicht gefunden hat - diese tiefgreifende Erkenntnis hilft aber beim Programmieren garnicht weiter. Falls man mit einer umgewandelten Zahl noch irgendetwas Sinnvolles anfangen will, ist es schon sehr hilfreich, Normen zu beachten, eine Zahl in Gleitkommadarstellung kann eben nur wieder gelesen werden, wenn man den Aufbau von Vorzeichen, Exponent und Mantisse kennt. Auch die verschiedenen manuellen Schreibweisen sind nur vereinbarte Kodierungen (und nicht die "Zahl selbst", wers nicht glaubt, soll Pi hinschreiben). Gruss Reinhard |
Re: Dec to Hex
Hallo Reinhard,
Zitat:
Freundliche Grüße |
Re: Dec to Hex
Hallo,
Ähh ich erkläre mal kurz wozu die Umrechnung. Und zwar lese ich aus einer Excel-Tabelle Werte aus und gebe die über Ethernet-Schnittstelle an ein Gerät weiter. Die Funktion (die nicht ich geschrieben habe) um Werte an das Gerät zu senden, nimmt nur HEX Werte an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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