数据转换






4.83/5 (46投票s)
2002年6月29日

427720
这些是一些数据转换示例,
引言
以下是一些带有小示例的数据转换:
十进制转换
十进制转十六进制
// Use _itoa( ) function and set radix to 16. char hexstring[10]; int number = 30; itoa( number, hexstring, 16); // In hexstring is 1e.
十六进制转十进制
// You can use strtol function and you can specify base. char * hexstring= "ABCDEF"; char * p; int number = strtol(hexstring, &p,16); // A function that does this bool HexToDecimal (char* HexNumber, int& Number) { char* pStopString; Number = strtol (HexNumber, &pStopString, 16); return (bool)(Number != LONG_MAX); }
十进制转时间
char *DecToTime(float fTime, char *szTime) { int nHrs, nMin, nSec; fTime *= 3600; nHrs = (int)fTime / 3600; nMin = (int)(fTime - nHrs * 3600) / 60; nSec = (int)(fTime - nHrs * 3600 - nMin * 60); wsprintf(szTime, "%02d.%02d.%02d Hrs.Min.Sec.", nHrs, nMin, nSec); return szTime; }
字符串转换
字符串转十六进制
sscanf(string, %04X, &your_word16); // where string = your string and // 04 = length of your string and X = hex
十六进制转CString
CString Str; unsigned char Write_Buff[1]; Write_Buff[0] = 0x01; Str.Format("0x0%x",Write_Buff[0]);
COleVariant转CString
CString strTemp;
COleVariant Var;
Var = "FirstName";
strTemp = Var.bstrVal;
AfxMessageBox(strTemp);
CString转char指针
CString MyString = "ABCDEF"; char * szMyString = (char *) (LPCTSTR) MyString;
char *pBuffer = new char[1024]; CString strBuf = "Test"; pBuffer = strBuf.GetBuffer(sizeof(pBuffer));
char指针转CString
char * mystring = "12345"; CString string = mystring;
Double转CString,包括小数部分
CString strValue,strInt, strDecimal; int decimal,sign; double dValue = 4.125; strValue = _fcvt(dValue,6,&decimal,&sign); // Now decimal contains 1 because there is // only one digit before the . strInt = strValue.Left(decimal); // strInt contains 4 strDecimal = strValue.Mid(decimal); // strDecimal contains 125 CString strFinalVal; strFinalVal.Format("%s.%s",strInt,strDecimal); // strFinalVal contains 4.125
Double转CString
CString strValue; int decimal,sign; double dValue = 123456789101112; strValue = _ecvt(dValue,15,&decimal,&sign);
CString转Double
strValue = "121110987654321";
dValue = atof(strValue);
CString转LPCSTR
CString str1 = _T("My String"); int nLen = str1.GetLength(); LPCSTR lpszBuf = str1.GetBuffer(nLen); // here do something with lpszBuf........... str1.ReleaseBuffer();
CString转LPSTR
CString str = _T("My String"); int nLen = str.GetLength(); LPTSTR lpszBuf = str.GetBuffer(nLen); // here do something with lpszBuf........... str.ReleaseBuffer();
CString转WCHAR*
CString str = "A string here" ; LPWSTR lpszW = new WCHAR[255]; LPTSTR lpStr = str.GetBuffer( str.GetLength() ); int nLen = MultiByteToWideChar(CP_ACP, 0,lpStr, -1, NULL, NULL); MultiByteToWideChar(CP_ACP, 0, lpStr, -1, lpszW, nLen); AFunctionUsesWCHAR( lpszW ); delete[] lpszW;
LPTSTR转LPWSTR
int nLen = MultiByteToWideChar(CP_ACP, 0, lptStr, -1, NULL, NULL); MultiByteToWideChar(CP_ACP, 0, lptStr, -1, lpwStr, nLen);
string转BSTR
string ss = "Girish";
BSTR _bstr_home = A2BSTR(ss.c_str());
CString转BSTR
CString str = "whatever" ;
BSTR resultsString = str.AllocSysString();
_bstr_t转CString
#include <ANSIAPI.H> #include <comdef.h> _bstr_t bsText("Hai Bayram"); CString strName; W2A(bsText, strName.GetBuffer(256), 256); strName.ReleaseBuffer(); AfxMessageBox(strName); char szFileName[256]; GetModuleFileName(NULL,szFileName,256); AfxMessageBox(szFileName);
字符数组
字符数组转整数
char MyArray[20]; int nValue; nValue = atoi(MyArray);
字符数组转浮点数
char MyArray[20]; float fValue; fValue = atof(MyArray);
Char指针转double
char *str = " -343.23 "; double dVal; dVal = atof( str );
Char指针转整数
char *str = " -343.23 "; int iVal; iVal = atoi( str );
Char指针转long
char *str = "99999"; long lVal; lVal = atol( str );
Char*转BSTR
char * p = "whatever"; _bstr_t bstr = p;
浮点数转WORD及其反向转换
float fVar; WORD wVar; fVar = 247.346; wVar = (WORD)fVar; //Converting from float to WORD. //The value in wVar would be 247 wVar = 247; fVar = (float)fVar; //Converting from WORD to float. //The value in fVar would be 247.00
结论
祝你好运,玩得开心。我已经检查了上面的大部分代码,但如果我哪里错了,请告诉我,以便我进行修改。谢谢。