float类型转成4字节char的几种方式 |
您所在的位置:网站首页 › c语言里强制转换 › float类型转成4字节char的几种方式 |
转载自https://zhuanlan.zhihu.com/p/161206819 序将float转换成char且保证精度数据不丢失,三种方法:强制类型转换、共同体、内存拷贝。 float在内存中的储存方式:https://blog.csdn.net/u014470361/article/details/79820892 一、强制类型转换 #include "stdio.h" int main(void) { float fa = -123.56; unsigned char farray[4] = { 0 }; *(float*)farray = fa; printf("farray[0]=%#X,farray[1]=%#X,farray[2]=%#X,farray[3]=%#X\n", farray[0], farray[1], farray[2], farray[3]); printf("%f\n", *(float*)farray); return (0); }结果: farray[0]=0XB8,farray[1]=0X1E,farray[2]=0XF7,farray[3]=0XC2 -123.559998 二、使用共同体转换 #include "stdio.h" union { float fa; unsigned char farray[4]; }utemp; int main(void) { int i = 0; float ft = 0.0; utemp.fa = (float)123.56; printf("farray[0]=%#X,farray[1]=%#X,farray[2]=%#X,farray[3]=%#X\n", utemp.farray[0], utemp.farray[1], utemp.farray[2], utemp.farray[3]); ft = *(float*)utemp.farray; printf("%f\n", ft); return (0); }结果: farray[0]=0XB8,farray[1]=0X1E,farray[2]=0XF7,farray[3]=0X42 123.559998 三、使用memcpy #include "stdio.h" #include "string.h" int main(void) { float fa; unsigned char farray[4]; float ft; fa = 45.23; memcpy(farray, &fa, sizeof(farray)); printf("farray[0]=%#X,farray[1]=%#X,farray[2]=%#X,farray[3]=%#X\n", farray[0], farray[1], farray[2], farray[3]); memcpy(&ft, &farray, sizeof(farray)); printf("%f\n", ft); return (0); }结果: farray[0]=0X85,farray[1]=0XEB,farray[2]=0X34,farray[3]=0X42 45.230000建议使用共同体进行转换,提高系统的稳定性。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |