#include<stdio.h>
#include<string.h>
int main()
{
float f=12.3;
char res[10]="";
/* 强转用法初探 */
/* memcpy(res,&f,sizeof(float));
printf("%.1f\n",*(float*)res);
*/
/* 方式一 */
/* union fi{float f; int i;}fi;
fi.f=12.3;
sprintf(res,"%x",fi.i);
sscanf(res,"%x",&fi.i);
printf("%s : %.1f",res,fi.f);
*/
/* 方式二 */
sprintf(res,"%x",*(unsigned int*)&f); //网上说%x对应的就是整形的,而直接转确实有警告是unsigned int, 如果不加的话转出的16进制是不对的
sscanf(res,"%x",(unsigned int*)&f);
printf("%s : %.1f",res,f);
return 0;
}
#include<string.h>
int main()
{
float f=12.3;
char res[10]="";
/* 强转用法初探 */
/* memcpy(res,&f,sizeof(float));
printf("%.1f\n",*(float*)res);
*/
/* 方式一 */
/* union fi{float f; int i;}fi;
fi.f=12.3;
sprintf(res,"%x",fi.i);
sscanf(res,"%x",&fi.i);
printf("%s : %.1f",res,fi.f);
*/
/* 方式二 */
sprintf(res,"%x",*(unsigned int*)&f); //网上说%x对应的就是整形的,而直接转确实有警告是unsigned int, 如果不加的话转出的16进制是不对的
sscanf(res,"%x",(unsigned int*)&f);
printf("%s : %.1f",res,f);
return 0;
}