【VC】CString类型数据(十六进制) TO int类型

 

当我们获取数据时,是CString类时。。

1.CString 数据是 1234,4567等

int nNum = wtoi(CString);  这样是可以直接转换的。。

 

2。CString 数据是 FFFF,FF33 等

这样就得自己写函数来实现了。。

 

BOOL StrHexToDec(CString szStr,int& nData)
{
	int nTemp = 0;
	nData = 0;
	int nLen = szStr.GetLength();
	for (int i = 0;i<nLen;i++)
	{
		TCHAR c = szStr.GetAt(i);
		if (c >= '0' && c <= '9')
		{
			nTemp = c - '0';
		}
		else if (c >= 'a' && c <= 'f')
		{
			nTemp = c - 'a'+10;
		}
		else if (c >= 'A' && c <= 'F')
		{
			nTemp = c - 'A'+10;
		}
		else
		{
			return FALSE;
		}
		nTemp <<= ((nLen-i-1)<<2);   
		nData |= nTemp;
	}	
	return TRUE;
}

IDE:2008+SP1  Unicode 编码
C++中,将CString对象换为十六进制字符串,可以通过遍历CString中的每个字符,并将其换为对应的十六进制数来实现。下面是一个简单的示例代码,展示如何将CString换为十六进制字符串: ```cpp #include <iostream> #include <sstream> #include <iomanip> // 用于std::setfill和std::setw // 函数用于将CString中的每个字符换为两位十六进制数 CString ConvertCStringToHexString(const CString& str) { std::ostringstream hexStringStream; hexStringStream << std::hex << std::setfill('0'); for (int i = 0; i < str.GetLength(); ++i) { // 将字符换为无符号整数,并输出为两位十六进制数 hexStringStream << std::setw(2) << static_cast<int>(static_cast<unsigned char>(str[i])); } return hexStringStream.str().c_str(); // 将std::string换为CString } int main() { CString original = _T("Hello, World!"); // 原始CString字符串 CString hexString = ConvertCStringToHexString(original); // 换后的十六进制字符串 std::cout << "Original: " << original << std::endl; std::cout << "Hex: " << hexString << std::endl; return 0; } ``` 这段代码中,我们定义了一个函数`ConvertCStringToHexString`,它接收一个CString类型的参数,并返回一个表示其内容的十六进制字符串。我们使用了`std::ostringstream`来构建十六进制字符串,并利用`std::hex`来设置输出为十六进制格式,`std::setfill('0')`和`std::setw(2)`来确保每个字节都被格式化为两位十六进制数,即使其值小于16。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值