delphi converteer microsoft binary naar ieee (8bits)

Iemand heeft de code om van oude MSB naar ieee (delphi real) te converteren?

In Google heb ik alleen de 4bit-conversie opgericht, maar niet voor 8bits:

function MBF2IEEE(MBFVal: Single): Single;
var
   Output: array[1..4] of byte;
   Value: Single absolute Output;
//   Sign: byte;
   LSB: Byte;
begin
   try
      Output[4] := TInput(MBFVal)[4];
      { if value is non-zero, do some bit shuffling }
      if Output[4] > 2 then begin
         Output[3] := TInput(MBFVal)[3];
         Output[2] := TInput(MBFVal)[2];
         Output[1] := TInput(MBFVal)[1];
         Output[4] := Output[4] - $02;
         LSB := Output[4] and $01;
         Output[4] := (Output[4] shr 1) or (Output[3] and $80);
         if LSB = 0 then
            Output[3] := Output[3] and $7f
         else
            Output[3] := Output[3] or $80;
      { else return 0 }
      end else begin
         Output[1] := 0;
         Output[2] := 0;
         Output[3] := 0;
         Output[4] := 0;
      end;
      Result := Value;
   except
      Output[1] := 0;
      Output[2] := 0;
      Output[3] := 0;
      Output[4] := 0;
   end;
end;

(vanaf deze pagina http://www.experts-exchange.com/Programming/Talen /Pascal/Delphi/Q_20245266.html )

Bedankt!

1
toegevoegd de auteur pragmatic_programmer, de bron
Heeft u een koppeling die dit 8-bits MSB-formaat documenteert?
toegevoegd de auteur David Heffernan, de bron
Ik vroeg om de link zodat de rest van ons kon inhalen wat MSB is. Met enkele goede referenties weet ik zeker dat iemand code kan samenvoegen om de conversie te doen.
toegevoegd de auteur David Heffernan, de bron

1 antwoord

Na het werken met het, was het converteren van doubles niet zo eenvoudig als singles .. (exponenten en mantises komen niet overeen).

Zelfs de C-code in de link werkt in sommige gevallen niet goed (misschien omdat het is ontworpen voor een 16-bit-compiler? Ik weet het niet, heeft geen tijd om volledig te testen) ..!

Ik ben deze asm bibliotheek tegengekomen (het is zijn gratis) die het probleem heeft opgelost (moet het importeren zoals C dll's):

http://www.microdexterity.com/demos/mbfiee32.zip

Veel succes voor de volgende hierna

0
toegevoegd