单精度浮点数与十六进制转换
生活随笔
收集整理的這篇文章主要介紹了
单精度浮点数与十六进制转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#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
微信掃描二維碼,關注我的公眾號?
總結
以上是生活随笔為你收集整理的单精度浮点数与十六进制转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AD9361开发:接收与发送滤波器配置
- 下一篇: 用数组实现一个栈