首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

16进制转float数,该怎么处理

2012-04-05 
16进制转float数遇到一个问题,ModbusRTU协议的仪表,返回数据是4字节的16进制,返回数据已经取过来了数据是:

16进制转float数
遇到一个问题,ModbusRTU协议的仪表,返回数据是4字节的16进制,返回数据已经取过来了
数据是:80 00 00 00,数据位是float数,怎么把16进制数据转换位float数
没有搜索到怎么处理,请教谁知道的给说说

[解决办法]

C/C++ code
byte bt[] = { 0x80, 0x0, 0x0, 0x0 };float b = *(float *)bt;
[解决办法]
int HtoD(AnsiString Order1)//自定义函数十六进制转成十进制
{
char *endptr;
short int lAny;
lAny = strtol(Order1.c_str(),&endptr,16);
lAny = StrToInt(FormatFloat("#00",lAny));
return lAny;
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
float fx;
unsigned char *px;
unsigned char x[4];
void *pf;
//Edit6 ~ Edit9 放 float对应的十六进制数
x[0]=(unsigned char)HtoD(Edit6->Text);
x[1]=(unsigned char)HtoD(Edit7->Text);
x[2]=(unsigned char)HtoD(Edit8->Text);
x[3]=(unsigned char)HtoD(Edit9->Text);
px=x;
pf=&fx;
for(int i=0;i<4;i++) *((char*)pf+i)=*(px+i);
//转换后的32bit整数
Edit1->Text=FloatToStr(fx);
}

热点排行