Re: Reading Float Data from a binary file into ada
- From: "Steve" <nospam_steved94@xxxxxxxxxxx>
- Date: Tue, 30 Jan 2007 19:54:07 -0800
"frikk" <frikker@xxxxxxxxx> wrote in message
news:1170172307.292500.256090@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hello everyone! I am having a problem that I would love some help
with.
Essentially I was given a Visual Basic program that dumps a binary
configuration file with all of the variables in a set. The variables
are each 32 bit floats, with the first 16 bits being the integer part
and the second 16 bits being a representation of the fraction (I'm not
sure if this is stanard - but its just how VB dumps the data). The
binary dump is basically a copy of the way VB stores the data in
memory. I need to be able to use this data in ada. There is a C
counterpart to this that makes use of a 'union' to grab the data 1
byte (8 bits) at a time, put them into a char array of size 4, then
use a 32 bit float to reference the data. Is there somehow I can do
this in ada as well?
Your description of how the C counterpart works is inconsistant with the way
you have described the data format in the file.
If the C program is using a union to view the data as either a float or a 4
character array then it is very likely that the data is in fact stored in
IEEE 754 floating point format. If you are using Microsoft's C compiler
this is certainly the case.
The following snippet contains the pieces you need to do the conversion.
TYPE aByte IS MOD 256;
FOR aByte'SIZE USE 8;
TYPE aByteArray IS ARRAY( Positive RANGE <> ) OF aByte;
PRAGMA PACK( aByteArray );
TYPE aFourBytes IS NEW aByteArray(1..4);
FUNCTION Conv IS NEW Ada.Unchecked_Conversion( aFourBytes, float );
...
a : float;
b : aFourBytes;
...
a := Conv( b )
Use unchecked conversion to convert from a type that contains 4 bytes to the
float value you're looking for.
Regards,
Steve
(The Duck)
Basically I need to be able to read in the binary data byte by byte
but store it into a 32 bit Float. The C union example above uses the
same memory address for the Float as it does for the size 4 char
array. I don't even know if the VB dump will correspond with the way
ada handles floats or not, but I'll worry about that later.
I am also using Matlab/Simulink if that provides any additional tools
to use for debugging.
Thank you for any help,
Blaine
.
- Follow-Ups:
- Re: Reading Float Data from a binary file into ada
- From: frikk
- Re: Reading Float Data from a binary file into ada
- From: Maciej Sobczak
- Re: Reading Float Data from a binary file into ada
- References:
- Reading Float Data from a binary file into ada
- From: frikk
- Reading Float Data from a binary file into ada
- Prev by Date: Re: Easy question about Character manipulation
- Next by Date: Re: Ravenscar - program termination
- Previous by thread: Re: Reading Float Data from a binary file into ada
- Next by thread: Re: Reading Float Data from a binary file into ada
- Index(es):
Relevant Pages
|