读书人

新年快乐! 返回值有关问题

发布时间: 2012-04-08 14:38:30 作者: rapoo

新年快乐! 返回值问题
首先祝大家龙年大吉,也祝小女子我本命年好运连连,(*^__^*) 嘻嘻……

部分代码如下:
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谢谢先

[解决办法]
不是很明白想干啥。。。
[解决办法]

C/C++ code
r=atoi(st);//st转化为int型
[解决办法]
别用16进制输出吧
[解决办法]
16进制字符串 能atoi()? 干嘛呢
[解决办法]
st是CString 这个是类
int atoi(const char *nptr); 参数const char *
这个能这么用?
[解决办法]
直接return st;不就好了。。。
[解决办法]
16个字节放不到一个int中。8个字节可以放在一个__int64中:
C/C++ code
    __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;

由于考虑到跨平台问题,也就是字节序大小端的问题,所以不要用数组形式来做,最好直接将结果保存到整形变量中。
[解决办法]
C/C++ code
int main(void){    int r;    char buf[] = "123456";    r=atoi(buf);  //注意参数是char *类型    cout << r << endl;  //你这可以return r} 

读书人网 >C++

热点推荐