Re: How to byte swap an IEEE Float?




On 28 Jun 2005, at 14:53, Björn wrote:

I need to read some float values from file that have been written in
big-endian byte order from a c-program. The simple swapping procedure
that I have just interchanges the byte order of type IEEE_Float_32 to
get little-endian. The problem is that for some values (eg. 33.229000)
it is a "NaN" when doing IEEE_Float_32'Read and I get a constraint
error (invalid data) from stream_io when the value is read. How do I
get around this?

Simple. Setup an array of bytes with the same representation of the float type (use representation clauses and pragma Pack). Read the array of bytes. Swap the bytes. Convert to the float type (use unchecked conversion).
.




Relevant Pages

  • Re: How to byte swap an IEEE Float?
    ... big-endian byte order from a c-program. ... The simple swapping procedure that I have just interchanges the byte order of type IEEE_Float_32 to get little-endian. ...
    (comp.lang.ada)
  • Re: How to byte swap an IEEE Float?
    ... that I have just interchanges the byte order of type IEEE_Float_32 to ... get little-endian. ... Convert to the float type (use unchecked conversion). ...
    (comp.lang.ada)