union
{
float f;
char c[4];
} fnum;
fnum.c[0] = 0x42;
fnum.c[1] = 0x49;
fnum.c[2] = 0x99;
fnum.c[3] = 0x9A;
IEEE 754 и float в С++
появилась такая проблема: есть число (например 42 49 99 9A, в нормальном виде это 50.4) оно представлено в формате IEEE 754, я его получаю по сети в виде четырех байт, потом с помощью смещений собираю одно большое число , но когда хочу присвоить его переменной с типом данных float, оно (это число) воспринимается как целое, со всеми вытикающими последствиями!!! Неужели мне придется его раскручивать по битам самому, т.е. выделять мантису, экспоненту и знак, или есть какой-нибудь другой путь... помогите пожалуйста, заранее благодарен....:)
Код:
после этого, в fnum.f будет содержаться 50.4
P.S. порядок следования чисел мог перепутать!
upd: А за кросспостинг - по заднице... :mad:
А кросспостить больше никогда не буду...:)