Autor Beitrag
Smartie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Do 12.05.05 06:43 
Servus!

Also, vor einigen Wochen habe ich es geschafft, einen HEX, in einen double zu konvertieren. (Der HEX-Wert war in einer Binärdatei welceh ich als String ausgelesen habe.) Da es sich um eine maximal 8-Bytedarstellung handelt, hab ich das Problem folgendermaßen gelöst:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
{-----------------------------------------------------------------------------
  Function : HextoDouble
  Version   : Beta

  Resultat    : Ein Double. Hier ist eine Hilfsfunktion mit aufgeführt.
-----------------------------------------------------------------------------}

// Unter-FUNKTION HEX zu Double
function SubHextoDouble(Hex: String): double;
var a: Integer; //Hilfsvariable
var HexStr : String;
begin
  SetLength(HexStr, Length(Hex) * 2);
  BinToHex(PChar(Hex), PChar(HexStr), Length(Hex));
  a:=StrtoInt('$' + HexStr);
  SubHextoDouble := a;

end;
// FUNKTION HEX zu Double
function HextoDouble(Hex: String): double;
var hex1, hex2 : String;
    b1, b2 : Double;
    stellen, delta : Integer;
begin
  stellen := length(Hex);
  delta := stellen - 4;
  if stellen <5 then
  begin
    HextoDouble := SubHextoDouble(hex);
  end
  else
  begin
    Hex1 := copy(Hex, 1, 4);
    hex2 := copy(Hex, 5, delta);
    b1 := SubHextoDouble(Hex1);
    b2 := SubHextoDouble(Hex2);
    HextoDouble := b2 + b1 * Power(16, delta);
  end;

end;


So, und nun muß ich das ganze auch Rückgängigmachen, und ich hab im Augenblich leider keine Idee wie ich des machen könnte?

Hat einer von Euch zufällig eine?

Herzlichen Dank und lieben Gruß


Smartie
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 12.05.05 07:13 
Du solltest dich damit auseinadersetzten, wie Fließkommazahlen im Binärsystem dargestellt werden (können). dann weißt du auch, wie du einen Fließkommawert bvinär darstellest. D ie Hexadezimaledarstellung ist nur eine andere Darstellung, nichts anderes.
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Do 12.05.05 07:52 
in diesem Fall ist es nicht mal so wild wegen dem Gleitkommawert, da dieser auf jeden Fall eine ganze Zahl ist.

Dennoch ein Double.