Я пытаюсь написать автоматизированную тестовую программу, которая требует от меня генерировать поток данных массива int array (который фактически хранит данные с плавающей запятой)Как преобразовать массив int (удерживая значение float в Hex) обратно в значение float в C
чтобы создать этот массив Int, я пытаюсь
написать плавающее число в массив символов байт, а затем
преобразовать массив символов байт в Int массив, который позже
преобразовать число из массива int в плавающую точку (без потери десятичных точек).
Я был в состоянии сделать шаг 1 & 2 без проблем, но я не могу преобразовать Int массива обратно с плавающей запятой, используя (поплавок) (* INT_PTR).
Мой код:
int ibuff[10];
int *int_ptr;
float f=0.1;
char c [sizeof(float)];
memcpy(c, &f, sizeof(float)); //now c is 0x3f800000;
ibuff[0]=(c[3]<<24 | c[2]<<16 | c[1]<<8 | c[0]); //ibuff[0] is now also 0x3f800000
int_ptr=&ibuff[0];
printf("%f\n", (float)(*int_ptr)); //this will print out 1065353216.0000, and not 1.0 as I expected
Почему вы не используете массив float вместо массива int? – v7d8dpo4
Почему и C++, и c? Знаете ли вы, что это разные языки? –
Вы действительно ищете 'union {int i; float f; }; 'где вы будете присваивать' int' и читать из 'float'? –