浮點數轉換成16進制的字符串

// 在一些規約解析中,我們往往需要把浮點數轉換成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);
}
// 輔助函數:

/*****************************************************************************
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(_T("%002X"),byteArray[i]);
   str += strTmp;
}
return str; 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章