| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 1261 人关注过本帖
标题:在做CSTring转long的过程中碰上了点问题
收藏  订阅  推荐  打印 
云修
Rank: 1
等级:新手上路
帖子:1
积分:110
注册:2007-4-26
在做CSTring转long的过程中碰上了点问题

工具:Microsoft Visual Studio .NET 2003

CString b=""01234567111"";
long a[16]={0};
char temp[16]={0};
long L,R.
将b分边以十六进制型式给L和R,应该得到:
L=0x01234567
R=0x11100000
可是在监视器中得到的R是0xffffffd0;

有人知道为什么吗?小弟怎么弄都弄不明白.
分开赋值程序如下:
strcpy(temp,b.GetBuffer(b.GetLength()));
for (int i=0;i<16;i++)
{
a[i]=temp[i]-48;
}//在这里时temp[11]~temp[15]就变为:0xffffffd0了;
for (int m=0;m<2;m++)
{
a[m*8+0]=a[m*8+0]<<28;
a[m*8+1]=a[m*8+1]<<24;
a[m*8+2]=a[m*8+2]<<20;
a[m*8+3]=a[m*8+3]<<16;
a[m*8+4]=a[m*8+4]<<12;
a[m*8+5]=a[m*8+5]<<8;
a[m*8+6]=a[m*8+6]<<4;
if(m==0)
for(i=0;i<8;i++)
L=L|a[m*8+i];
else
for(i=0;i<3;i++)
R=R|a[m*8+i];
}
各位帮忙看看!!!谢谢啦
同时还出在调试过程中还出现了:Run-Time Check Failure #2 - Stack around the variable 'tmp' was corrupted.这样的提示
搜索更多相关主题的帖子: CSTring  long  
2007-4-26 13:11
liuminghui
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:20
帖子:2883
积分:29230
注册:2007-1-26


海鸽 is My Lover!!
2007-4-28 11:15
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.050521 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved