AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mal wieder HexToFloat

Offene Frage von "Neutral General"
Ein Thema von echitna · begonnen am 6. Jul 2017 · letzter Beitrag vom 15. Sep 2017
Antwort Antwort
Seite 3 von 3     123   
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#21

AW: Mal wieder HexToFloat

  Alt 7. Jul 2017, 10:58
Passt

Jetzt nur noch die umgekehrte Version (von Single nach HEXStr) ...
  Mit Zitat antworten Zitat
echitna

Registriert seit: 3. Jan 2005
Ort: Clausthal-Zellerfeld
25 Beiträge
 
Delphi XE5 Professional
 
#22

AW: Mal wieder HexToFloat

  Alt 7. Jul 2017, 20:56
Was soll das für ein Format sein? 4 Hex-Zeichen sind 16-Bit, das ist ein Format, das ungeöhnlich ist (single hat 32-Bit). Ohne Dokumentation des internen Aufbaus des 16-Bit-Wortes kann man wohl wenig sagen oder helfen.
Ja das ist leider ein ungewöhnliches Format, aber laut der Doku zu dem Gerät das ich anspreche ist das so verwendet. Ich habe es auch mit einem Port-Monitor geprüft, es werden wirklich nur vier Hex-Zeichen gesendet.
  Mit Zitat antworten Zitat
echitna

Registriert seit: 3. Jan 2005
Ort: Clausthal-Zellerfeld
25 Beiträge
 
Delphi XE5 Professional
 
#23

AW: Mal wieder HexToFloat

  Alt 7. Jul 2017, 20:57
Du kannst folgendes machen:
Delphi-Quellcode:
function HexToSingle(hex: String): Single;
var tmp: Cardinal;
begin
  tmp := StrToInt('$' + hex);
  Move(tmp, Result, SizeOf(Cardinal));
end;

var f: Single;
begin
  f := HexToSingle('FFE4');
  Caption := FloatToStr(f);
end;
Prinzipiell kannst du mit FloatToStrF oder Format die Zahl (wenn du sie als String ausgeben willst) auf X Nachkommastellen formatieren.
Hinweis: 9.17963e-41 ist NICHT 0,00000917. Die Darstellung "9.17963e-41" wird benutzt, weil die Zahl ausgeschrieben so aussehen würde:

0,0000000000000000000000000000000000000000917963
Sorry, war nur zu faul die vielen nullen zu tippen
  Mit Zitat antworten Zitat
echitna

Registriert seit: 3. Jan 2005
Ort: Clausthal-Zellerfeld
25 Beiträge
 
Delphi XE5 Professional
 
#24

AW: Mal wieder HexToFloat

  Alt 7. Jul 2017, 21:00
Vielen Dank für die vielen Tipps. Dann werde ich wohl mal eingiges ausprobieren wenn ich wieder dazu komme.
  Mit Zitat antworten Zitat
SirNox

Registriert seit: 15. Sep 2017
2 Beiträge
 
#25

AW: Mal wieder HexToFloat

  Alt 15. Sep 2017, 10:12
Hallo zusammen,

ich war gerade auch auf der Suche nach dieser Routine und hab vor diesen Forum folgendes gefunden:

https://gregstoll.dyndns.org/~gregstoll/floattohex/

Dort ist auch Code in anderer Sprache zu finden.

Ich hab die Hexwerte von Netzwerkprotokoll (BACnet) dort getestet und funktioniert:

0100 .... = Application Tag Number: Real (ANSI/IEE-754 floating point) (4)

present-value: 417.500000 (Real)
Hexwert: 43D0C000

Vielleicht bringt es was.
  Mit Zitat antworten Zitat
SirNox

Registriert seit: 15. Sep 2017
2 Beiträge
 
#26

AW: Mal wieder HexToFloat

  Alt 15. Sep 2017, 10:57
Ich habe nach dem Standard mal gesucht und folgendes gefunden:
http://www.delphipraxis.net/120032-i...l-wandeln.html

Bei mir hat es dann funktioniert:

Delphi-Quellcode:
var
  Data: array[0..3] of byte;
  X: Real;
begin
  Data[3] := aMsg.TheMessage[offset];
  Data[2] := aMsg.TheMessage[offset + 1];
  Data[1] := aMsg.TheMessage[offset + 2];
  Data[0] := aMsg.TheMessage[offset + 3];
  X := PSingle(@data)^;
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#27

AW: Mal wieder HexToFloat

  Alt 15. Sep 2017, 11:03
Edit: War Unsinn
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz