vc 浮点数转换为内存十六进制字符串
2014-05-08 22:39
267 查看
在一些规约解析中,我们往往需要把浮点数转换成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;
}
关于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;
}
相关文章推荐
- 20060602-Cell segmentation
- Shell Script(1)----variable compare
- 冲刺周期会议九
- C#面向对象基于winform的扫雷游戏和简单的算法改进
- 自定义ImageView显示gif图片
- vi 常用命令行
- Switch 可用于字符串
- 数学----有趣的扑克牌《一》
- 写在首页
- == 网络和服务器编程 ==
- 圆与扇形碰撞检测
- RFC6455-The WebSocket protocol 之九:9. Extensions
- Spring一点点学习
- iis设置外网网站
- [java] 汇率换算器实现(2)
- 数学----有趣的扑克牌《一》
- Embedding data into JPEG
- 继承 内存分布
- uva10129
- Asp.Net MVC 分页、检索、排序整体实现