float类型转成4字节char的几种方式

您所在的位置:网站首页 c语言里强制转换 float类型转成4字节char的几种方式

float类型转成4字节char的几种方式

2024-07-11 02:57| 来源: 网络整理| 查看: 265

转载自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