直接上代码,亲测可用!
#include<stdio.h>
typedef unsigned char u8;
typedef unsigned int u32;
typedef union
{
u8 data[4];
float value;
} s_convert;
void Conversion_Func1(s_convert *nstr, u32 nval)
{
nstr->data[0] = nval;
nstr->data[1] = nval >> 8;
nstr->data[2] = nval >> 16;
nstr->data[3] = nval >> 24;
}
void Conversion_Func2(s_convert *nstr, float nval)
{
nstr->value = nval;
}
int main()
{
s_convert werwer;
u8 data = 0;
u32 data1 = 0;
u8 data2 = 0;
float data3 = 0;
while (1)
{
printf("请选择一个项目输入数字(1或2)\n\t1.hexTOfloat\n\t2.floatTOhex\n"); /* code */
printf("-------------------------------------------\n"); /* code */
scanf("%d", &data);
if (data == 1)
{
printf("请输入一个16进制32位整数\n(*必须带上0x前缀):\n"); /* code */
printf("-------------------------------------------\n"); /* code */
scanf("%X", &data1);
Conversion_Func1(&werwer, data1);
printf("0x%X转换结果为浮点数:\n\t%f \n", data1, werwer.value);
}
else
{
printf("请输入一个浮点数:\n"); /* code */
printf("-------------------------------------------\n"); /* code */
scanf("%f", &data3);
Conversion_Func2(&werwer, data3);
printf("%f转换结果为整型:\n\t", data3);
for (u8 i = 0; i < 4; i++)
{
printf("%02X ", werwer.data[3 - i]);
}
printf("\n");
}
printf("是否继续?Y/N\n");
printf("-------------------------------------------\n"); /* code */
scanf("%s", &data2);
if (data2 == 'N')
{
printf("退出\n");
break;
}
data = 0;
data1 = 0;
data2 = 0;
data3 = 0;
}
printf("谢谢使用,下次再见!\n");
system("pause");
return 0;
}