#include <stdio.h>/*---------------------------
十六进制到浮点数
---------------------------*/
float Hex_To_Decimal(unsigned char *Byte,int num)
{
#if 0char cByte[4];//方法一for (int i=0;i<num;i++){cByte[i] = Byte[i];}float pfValue=*(float*)&cByte;return pfValue;
#else return *((float*)Byte);//方法二
#endif
}long FloatTohex(float HEX)//浮点数到十六进制转换1
{return *( long *)&HEX;
}void FloatToByte(float floatNum,unsigned char* byteArry)//浮点数到十六进制转换2
{char* pchar=(char*)&floatNum;int i = 0;for( i=0;i<sizeof(float);i++){*byteArry=*pchar;pchar++;byteArry++;}
}void main()
{unsigned char floatToHex[4];unsigned char hexbyte[4]={0xcd,0xCC,0xCC,0x3D};//传输数据为3d cc cc cdfloat Hdecimal=0.0;float flh=0.4;Hdecimal=Hex_To_Decimal(hexbyte,sizeof(hexbyte));//十六进制转换为浮点数printf("\n 浮点数为:\n %f\n",Hdecimal);long hX=FloatTohex(Hdecimal);//浮点数转换为十六进制一printf("\n正序十六进制值:\n %f=%X \n",Hdecimal,hX);//正序显示FloatToByte(Hdecimal,floatToHex);//浮点数转为十六进制二printf("\n倒序十六进制:\n%f=%.2X %.2X %.2X %.2X\n",Hdecimal,floatToHex[0],floatToHex[1],floatToHex[2],floatToHex[3] );//倒序显示FloatToByte(flh,floatToHex);//浮点数转为十六进制二printf("\n倒序十六进制:\n%f=%.2X %.2X %.2X %.2X\n",flh,floatToHex[0],floatToHex[1],floatToHex[2],floatToHex[3] );//低位在前FloatToByte(flh,floatToHex);//浮点数转为十六进制二printf("\n正序十六进制:\n%f=%.2X %.2X %.2X %.2X\n",flh,floatToHex[3],floatToHex[2],floatToHex[1],floatToHex[0] );//高位在前}
推荐阅读:
专辑|Linux文章汇总
专辑|程序人生
专辑|C语言
嵌入式Linux
微信扫描二维码,关注我的公众号