新年快乐! 返回值问题
首先祝大家龙年大吉,也祝小女子我本命年好运连连,(*^__^*) 嘻嘻……
部分代码如下:
int r;
if(len == 16)
{
CString st;
for(int i = 0; i < len; i++)
{
BYTE tmp;
CString st1;
tmp = buf[i];
st1.Format("%X%X",(tmp >> 4) & 0x0f, tmp & 0x0f);
st = st + st1;
}
r=atoi(st);//st转化为int型
return r ;
}
我想返回st,转化为int之后只能显示数字,但是我st里面既有数字也有字母,所以,我就不知道怎么办了
O(∩_∩)O谢谢先
[解决办法]
不是很明白想干啥。。。
[解决办法]
r=atoi(st);//st转化为int型
[解决办法]
别用16进制输出吧
[解决办法]
16进制字符串 能atoi()? 干嘛呢
[解决办法]
st是CString 这个是类
int atoi(const char *nptr); 参数const char *
这个能这么用?
[解决办法]
直接return st;不就好了。。。
[解决办法]
16个字节放不到一个int中。8个字节可以放在一个__int64中:
__int64 r; char *p; if (len == 8) { p=(char *)&r; for(int i = 0; i < len; i++) { p[8-i] = buf[i];//01 23 45 67 89 ab cd ef } return r ;//0x0123456789abcdefI64 }
[解决办法]
想问一下,你是不是想把16进制的字符串转化成数字?
下面是代码(字符串长度不大于32)
C/C++ code
int ret = 0;
for (int i = 0; i < len; i++)
{
unsigned char tempVal = 0;
switch (buf[i])
{
case '0':
..........
case '9':
tempVal = buf[i] - '0';
break;
default: //必须保证输入的字符串合法即'a' ~ 'f',也可以自己做有效性检查
tempVal = buf[i] - 'a' + 10;
break;
}
ret |= tempVal >> (len - 1 - i) * 4;
}
return ret;
由于考虑到跨平台问题,也就是字节序大小端的问题,所以不要用数组形式来做,最好直接将结果保存到整形变量中。
[解决办法]
int main(void){ int r; char buf[] = "123456"; r=atoi(buf); //注意参数是char *类型 cout << r << endl; //你这可以return r}