问一个十easy的问题? 不太懂也。如果你用%x格式化,得到的是pData指针的值。具体错误信息是什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不太懂也。如果你用%x格式化,得到的是pData指针的值。具体错误信息是什么? 网络老出问题,说话老有回音,sorry vcmfc兄是不是前一阵子问COM已经倾家荡产了?:)如vcbear所说,如果你想以16进制看最后结果,一个字符需两个字节,再加一个空格作为分隔符,则你需要分配nDataLen*30个字节内存,来个循环,每次都将"%X ",*pData的结果加到szData结尾。不知你是不是这个意思?但怎么我总觉着今天用的这个方法怎么好像不好呢?:( 嘿嘿~~,俺还有N000分呢?,对了,我问这个问题的主要原因是我在进行字符串加密,在转换到OLECHAR时有部分字符没有UNICODE,老是出错,所以想到在转换前把字符变成16进制,在转换成UNICODE,所以在使用sprinf时出错了,不过字符转换我已经找到解决方法了,就很简单,不使用MDBCS,直接使用UNICODE就没有问题了,可这让我搞了N天,问了N个人都没有有办法。对了,对于你所说的,如果使用CString.Format(),是可以的,不会加空格的,这个还得讨论一下,就是怪,明天使用MFC来测试?,谁还有高见。 to vcbear:如果得到是指针的值,应该如何得到其内容值呢? 很简单呀,得到指针就用指针取值。对你不是问题吧。BYTE bt = (BYTE)*(pData+i);i++; 不过我的意思是: sprintf(Buffer,"%x",pData) // pData= 0x11223344; Buffer ="11223344".这个意思,就是把pData按一个Long的数字格式化了。 to vcbear:谢谢你的参与,不过我发现以下问题,看以下我的代码:char *p="abc";char *p1=(char*)malloc(6);memset(p1,0,6);sprintf(p1,"%X",&p);//如果以下两句注释掉的号,p="12F1DC",如果有以下两句p="12F1D0"//如果改为sprintf(p1,"%X",p),p为指针的地址CString k;k.Format("%X",&p);//不管如何,k="12F1D0"//一样,k.Format("%X",p)后,p为指针的地址,两者一样。AfxMessageBox(p1);为何sprintf取得值会不一样呀!,是BUG吗?,请高手解惑! 难道是我理解错了?sprintf((p1,"%X",&p)得到的是存放p这个变量的地址,是一个常数,在编译时已固定好了(着句话是否有错误,有待搞手确认)sprintf(p1,"%X",p)得到的是p中存放的内容,即一个内存地址 &p是指针的指针。sxbyl的话是对的。在编译时这个指针的存放地址就应该定了,当然指针本身的值可以变。sprintf(p1,"%X",p)得到的是这个指针当时的值。如果要得到它指想的内容,得用 "%s"至于sprint的值不一样,我没法重现。我得到的是一样的.可能是vcmfc没有把注释掉的语句贴上来。vcmfc,不妨long ll = (long)&p;然后sprint( ll) 和k.Format(ll)看看是不是一样。 谢谢大家的指正,我改用如下:char p[]="abc";char *p1=(char*)malloc(6);memset(p1,0,6);sprintf(p1,"%X",p[0]);此时得到a的16进制61。若如此的话,我不是要一个一个来,有没有一次性转换成的函数? 咦,我的感觉是sprintf(p1,"&X",&p)得到的是内容sprintf(p1,"%X",p)是得到地址vcmfc,俺帮不上忙了 各位兄弟,帮我看一下我的这个问题呀!http://www.csdn.net/expert/TopicView.asp?id=47260 vc音频的问题 FindWindowEx找到的按钮句柄怎么转换为TButton? 请教并口通信问题!! 请问怎么在win32下用gdi+实现双缓存? 通过ADO操作Excel,如何获得工作薄表名字的问题。 200分,求解关于在VC中调用网页脚本的问题 转分! VC与VB之间的关系总结 梦里还询——列表控件编辑 一个好多人都想知道的问题 有谁能畅谈一下C++中关于rtti(运行时类型识别)的用处? Visual Studio .Net 7.0 尝鲜
具体错误信息是什么?
如vcbear所说,如果你想以16进制看最后结果,一个字符需两个字节,再加一个空格作为分隔符,则你需要分配nDataLen*30个字节内存,来个循环,每次都将"%X ",*pData的结果加到szData结尾。不知你是不是这个意思?但怎么我总觉着今天用的这个方法怎么好像不好呢?:(
Buffer ="11223344".这个意思,就是把pData按一个Long的数字格式化了。
char *p="abc";
char *p1=(char*)malloc(6);
memset(p1,0,6);
sprintf(p1,"%X",&p);//如果以下两句注释掉的号,p="12F1DC",如果有以下两句p="12F1D0"
//如果改为sprintf(p1,"%X",p),p为指针的地址
CString k;
k.Format("%X",&p);//不管如何,k="12F1D0"
//一样,k.Format("%X",p)后,p为指针的地址,两者一样。
AfxMessageBox(p1);
为何sprintf取得值会不一样呀!,是BUG吗?,请高手解惑!
sprintf((p1,"%X",&p)得到的是存放p这个变量的地址,是一个常数,在编译时已固定好了(着句话是否有错误,有待搞手确认)
sprintf(p1,"%X",p)得到的是p中存放的内容,即一个内存地址
的值可以变。
sprintf(p1,"%X",p)得到的是这个指针当时的值。如果要得到它指想的内容,得用 "%s"
至于sprint的值不一样,我没法重现。我得到的是一样的.可能是vcmfc没有把注释掉的语句贴上来。
vcmfc,不妨long ll = (long)&p;然后sprint( ll) 和k.Format(ll)看看是不是一样。
char p[]="abc";
char *p1=(char*)malloc(6);
memset(p1,0,6);
sprintf(p1,"%X",p[0]);此时得到a的16进制61。
若如此的话,我不是要一个一个来,有没有一次性转换成的函数?
sprintf(p1,"%X",p)是得到地址vcmfc,俺帮不上忙了
http://www.csdn.net/expert/TopicView.asp?id=47260