有时在内存读到一个浮点数,16进制滴,不知道如何转成10进制表示,找了写资料简单写了下
有写处理的地方值的收藏下,会省很多事情滴
CString str;
float fValue=0;
CString oFloat;
char buf[128] = {};//9A 99 99 3E 85 67 18 C2
char *endStr;
GetDlgItemTextA(IDC_EDIT_FLOAT,oFloat);
oFloat.Replace(" ","");
if(oFloat.GetLength ()==8)
{
long lValue= strtol(oFloat,&endStr,16) ;16进制字串转10进制整
SetDlgItemText(IDC_STATIC,"单精度浮点");
memcpy(&fValue,&lValue,sizeof(float)); 最简单的转换方法,根本不需要写什么转换函数
}
else if(oFloat.GetLength ()==16)
{
long long lValue= strtol(oFloat,&endStr,16);
SetDlgItemText(IDC_STATIC,"双精度浮点");
memcpy(&fValue,&lValue,sizeof(float));
}
str.Format("%2f",fValue);
SetDlgItemText(IDC_EDIT_TEST,str);