16进制转float数解决办法
16进制转float数遇到一个问题,ModbusRTU协议的仪表,返回数据是4字节的16进制,返回数据已经取过来了数据是:
16进制转float数
遇到一个问题,ModbusRTU协议的仪表,返回数据是4字节的16进制,返回数据已经取过来了
数据是:80 00 00 00,数据位是float数,怎么把16进制数据转换位float数
没有搜索到怎么处理,请教谁知道的给说说
[解决办法]
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);
}