Dropye
Dropye

Reputation: 224

Converting AMF Number from char to double an back

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?

Upvotes: 0

Views: 24

Answers (1)

David Schwartz
David Schwartz

Reputation: 182753

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.

Upvotes: 0

Related Questions