十六进制转float和“float转十六进制”经典代码
生活随笔
收集整理的這篇文章主要介紹了
十六进制转float和“float转十六进制”经典代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <stdio.h>
float Hex_To_Decimal(unsigned char *Byte,int num)//十六進制到浮點數
{
// ??? ?char cByte[4];//方法一
//???? for (int i=0;i<num;i++)
//???? {
// ?? ?cByte[i] = Byte[i];
//???? }
//???? ?
// ?? ?float pfValue=*(float*)&cByte;
//return? pfValue;
?? ?
?? ??? ?return *((float*)Byte);//方法二
}
long FloatTohex(float HEX)//浮點數到十六進制轉換1
{
?? ?return *( long *)&HEX;
}
void FloatToByte(float floatNum,unsigned char* byteArry)浮點數到十六進制轉換2
{
??? char* pchar=(char*)&floatNum;
??? for(int 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 cd
?? ?float Hdecimal=0.0;
?? ?float flh=0.4;
//???? int num=sizeof(hexbyte);
// ?? ?printf("num= %d\n",num);
??? 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=%x %x %x %x\n",Hdecimal,floatToHex[0],floatToHex[1],floatToHex[2],floatToHex[3] );//倒序顯示
?? ?
?? ?FloatToByte(flh,floatToHex);//浮點數轉為十六進制二
??? printf("\n倒序十六進制:\n%f=%x %x %x %x\n",flh,floatToHex[0],floatToHex[1],floatToHex[2],floatToHex[3] );//低位在前
?? ?FloatToByte(flh,floatToHex);//浮點數轉為十六進制二
?? ?
??? printf("\n正序十六進制:\n%f=%x %x %x %x\n",flh,floatToHex[3],floatToHex[2],floatToHex[1],floatToHex[0] );//高位在前
?? ??
?? ??
}
float Hex_To_Decimal(unsigned char *Byte,int num)//十六進制到浮點數
{
// ??? ?char cByte[4];//方法一
//???? for (int i=0;i<num;i++)
//???? {
// ?? ?cByte[i] = Byte[i];
//???? }
//???? ?
// ?? ?float pfValue=*(float*)&cByte;
//return? pfValue;
?? ?
?? ??? ?return *((float*)Byte);//方法二
}
long FloatTohex(float HEX)//浮點數到十六進制轉換1
{
?? ?return *( long *)&HEX;
}
void FloatToByte(float floatNum,unsigned char* byteArry)浮點數到十六進制轉換2
{
??? char* pchar=(char*)&floatNum;
??? for(int 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 cd
?? ?float Hdecimal=0.0;
?? ?float flh=0.4;
//???? int num=sizeof(hexbyte);
// ?? ?printf("num= %d\n",num);
??? 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=%x %x %x %x\n",Hdecimal,floatToHex[0],floatToHex[1],floatToHex[2],floatToHex[3] );//倒序顯示
?? ?
?? ?FloatToByte(flh,floatToHex);//浮點數轉為十六進制二
??? printf("\n倒序十六進制:\n%f=%x %x %x %x\n",flh,floatToHex[0],floatToHex[1],floatToHex[2],floatToHex[3] );//低位在前
?? ?FloatToByte(flh,floatToHex);//浮點數轉為十六進制二
?? ?
??? printf("\n正序十六進制:\n%f=%x %x %x %x\n",flh,floatToHex[3],floatToHex[2],floatToHex[1],floatToHex[0] );//高位在前
?? ??
?? ??
}
總結
以上是生活随笔為你收集整理的十六进制转float和“float转十六进制”经典代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十六进制数转换成float类型数据数据的
- 下一篇: 欧拉角、万向锁