您的位置:首页 > 其它

vc 浮点数转换为内存十六进制字符串

2013-01-19 09:15 387 查看


        在一些规约解析中,我们往往需要把浮点数转换成16进制的字符串 或者把16进制的字符串转换为浮点数来验证传输的正确性。下面的函数实现了浮点数到16进制字符串的转换,主要是使用了内存拷贝的方法。另外需要注意的是内存中的数据一般是底字节在前。

       关于16进制字符串(可以直接从内存查看)转换到浮点数,是下面过程的逆过程,这里就不在实现。

/*****************************************************************************

author/data:

Description: 浮点数转换为16进制字符串.

param:

f :        要转换的浮点数

    str:        16进制的字符串,符合格式: "C1 48 00 00 "

byteOrder: 0表示低字节在前,本函数只处理低字节在前的情况

*****************************************************************************/

void Float_To_HexStr(float f, CString& str,int byteOrder)

{

CByteArray byteArray;

byteArray.SetSize(4);

memcpy(&byteArray[0],&f,4);

str = CByteArrayToCString(byteArray);

str.TrimRight(" ");

}

辅助函数:

/*****************************************************************************

author/data:

Description: 把字节数组转换为16进制字符串.

param:

字节数组 :   the byte array will convert to str

return value:

    str:     Hex str.

*****************************************************************************/

CString CByteArrayToCString(CByteArray& byteArray)

{

int len = byteArray.GetSize();

CString strTmp,str;

str = "";

for(int i=0 ; i<len ; i++)

{

   strTmp.Format("%002X ",byteArray[i]);

   str += strTmp;

}

return str;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: