新年快乐! 返回值问题

小兰 2012-02-01 05:32:56
首先祝大家龙年大吉,也祝小女子我本命年好运连连,(*^__^*) 嘻嘻……

部分代码如下:
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谢谢先
...全文
110 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-02-02
  • 打赏
  • 举报
回复
上面代码中的char可能需要改成BYTE
赵4老师 2012-02-02
  • 打赏
  • 举报
回复
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
}
面包大师 2012-02-02
  • 打赏
  • 举报
回复
直接return st;不就好了。。。
小兰 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gpshq 的回复:]
16进制字符串 能atoi()? 干嘛呢
[/Quote]

⊙﹏⊙b,那我想返回st的值,那应该怎么办了
小兰 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 proorck6 的回复:]
C/C++ code
r=atoi(st);//st转化为int型


这一句是干什么用的?
[/Quote]
我想先把st转化为int型 再return
小兰 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 czh3642210 的回复:]
不是很明白想干啥。。。
[/Quote]
返回st的值,不知道怎么返回
小兰 2012-02-02
  • 打赏
  • 举报
回复
O(∩_∩)O谢谢各位了,程序比较混乱,我也是初学,说的也比较混乱,不过问题已经解决了,我把它换成char类型了
qixing1115 2012-02-02
  • 打赏
  • 举报
回复
int main(void)
{
int r;
char buf[] = "123456";
r=atoi(buf); //注意参数是char *类型
cout << r << endl; //你这可以return r

}




楼主可以参考下
newpuple 2012-02-02
  • 打赏
  • 举报
回复
ret |= tempVal >> (len - 1 - i) * 4;

这里写错了,应该是 ret |= tempVal << (len - 1 - i) * 4;
newpuple 2012-02-02
  • 打赏
  • 举报
回复
想问一下,你是不是想把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;

由于考虑到跨平台问题,也就是字节序大小端的问题,所以不要用数组形式来做,最好直接将结果保存到整形变量中。
slz17 2012-02-01
  • 打赏
  • 举报
回复
st是CString 这个是类
int atoi(const char *nptr); 参数const char *
这个能这么用?
氰客 2012-02-01
  • 打赏
  • 举报
回复
16进制字符串 能atoi()? 干嘛呢
Isnis-fallen 2012-02-01
  • 打赏
  • 举报
回复
别用16进制输出吧
proorck6 2012-02-01
  • 打赏
  • 举报
回复
r=atoi(st);//st转化为int型

这一句是干什么用的?
面包大师 2012-02-01
  • 打赏
  • 举报
回复
不是很明白想干啥。。。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧