[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]
{
Trevor Carlson
> Does anyone have source examples of how to convert an MSBIN to a
> LongInt Type Variable?
}
Type
MKS = Array [0..3] of Byte;
Function MStoIEEE(Var MS) : Real;
{ Converts a 4 Byte Microsoft format single precision Real Variable as
used in earlier versions of QuickBASIC and GW-BASIC to IEEE 6 Byte Real }
Var
m : MKS Absolute MS;
r : Real;
ieee : Array [0..5] of Byte Absolute r;
begin
FillChar(r, sizeof(r), 0);
ieee[0] := m[3];
ieee[3] := m[0];
ieee[4] := m[1];
ieee[5] := m[2];
MStoieee := r;
end; { MStoIEEE }
Function IEEEtoMS(ie : Real) : LongInt;
{ LongInt Type used only For convenience of Typecasting. Note that this will
only be effective where the accuracy required can be obtained in the 23
bits that are available With the MKS Type. }
Var
ms : MKS;
ieee : Array [0..5] of Byte Absolute ie;
begin
ms[3] := ieee[0];
ms[0] := ieee[3];
ms[1] := ieee[4];
ms[2] := ieee[5];
IEEEtoMS := LongInt(ms);
end; { IEEEtoMS }
[Back to NUMBERS SWAG index] [Back to Main SWAG index] [Original]