Konwersja zmiennych IEEE 754

0

Pytanie moje może i banalne ale nie mogę znaleźć w sieci informacji na ten temat.
Jak wpisać do zmiennej np: single lub double wartość, którą otrzymuje poprzez interfejs RS232 we wspomnianym formacie IEEE 754.

np: otrzymuję wartość 0x3DACCC98 = 0,084374607

Jak najszybciej wrzucić tą wartość do zmiennej? :|
Nie chodzi o podział, konwersje oraz przeliczanie wartości po czym wrzucenie jej do zmiennej, a o możliwie najszybsze przypisanie .. Wszak operacje zmiennoprzecinkowe w warstwie sprzętowej wykonywane są właśnie w tym standardzie ( no prawie, ale w przybliżeniu można tak założyć ).

0

Problem rozwiązany ... w ASM ;D
zamiast w kodzie wysokiego poziomu :

 
liczba := $3DACCC98 ; 

trzeba wrzucić .. :

var liczba :single ;
begin
   asm
       mov liczba,$3DACCC98
   end;
Label1.Caption := floattostr(liczba) ; 

i wychodzi co trzeba ;D

0

Bez assemblera też się da, nie wiem jak z rzutowaniami w delphi, ale rzutowanie wskaźników przy przypisaniu powinno starczyć.

0

Poprzednio problem rozwiązałem ale nie do końca ... W przypadku umieszczenia dowolnej zmiennej zamiast ciągu heksadecymalnego kompilator wyrzucał błąd. :/

Po dość długim szukaniu .. znalazłem :-) ... Kopiowanie obszaru pamięci.

wygląda to następująco :

procedure TForm1.Button1Click(Sender: TObject);
var
a :integer;
b : single;
begin
  a := strtoint(edit1.Text) ;    // 1034734744
  move(a,b,4);
  edit2.Text := floattostr(b);  // 0,0843746066 
end;

Problem uważam za definitywnie rozwiązany :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1