Converting AMF Number from char to double an back

21 views Asked by At

in context of a protokoll I get messages in AMF Format.

The AMF Object Type "Number" is defined as

number-type = number-marker DOUBLE

The data following a Number type marker is always an 8 byte IEEE-754 double [...] in network byte order.

The following Examples are captured using Wireshark:

Hex: 40 00 00 00 00 00 00 00 Number: 2

Hex: 40 08 00 00 00 00 00 00 Number: 3

Hex: 3f f0 00 00 00 00 00 00 Number: 1

I tried to treat these as doube, long long and int64_t but none of these Types seems to use the correct order/format.

The implementation needs to be in C so I cant use any Librarys (The are none as it seems)

What would be the correct approach?

1

There are 1 answers

0
David Schwartz On

Likely your platform supports 8-byte IEEE-754 doubles but requires them to be in little-endian format. Your examples are in big-endian format. If you store them in an aligned array of unsigned characters from last to first and cast the pointer to a double *, you should get the right value.