不太懂也。如果你用%x格式化,得到的是pData指针的值。
具体错误信息是什么?

解决方案 »

  1.   

    不太懂也。如果你用%x格式化,得到的是pData指针的值。
    具体错误信息是什么?
      

  2.   

    网络老出问题,说话老有回音,sorry
      

  3.   

    vcmfc兄是不是前一阵子问COM已经倾家荡产了?:)
    如vcbear所说,如果你想以16进制看最后结果,一个字符需两个字节,再加一个空格作为分隔符,则你需要分配nDataLen*30个字节内存,来个循环,每次都将"%X ",*pData的结果加到szData结尾。不知你是不是这个意思?但怎么我总觉着今天用的这个方法怎么好像不好呢?:(
      

  4.   

    嘿嘿~~,俺还有N000分呢?,对了,我问这个问题的主要原因是我在进行字符串加密,在转换到OLECHAR时有部分字符没有UNICODE,老是出错,所以想到在转换前把字符变成16进制,在转换成UNICODE,所以在使用sprinf时出错了,不过字符转换我已经找到解决方法了,就很简单,不使用MDBCS,直接使用UNICODE就没有问题了,可这让我搞了N天,问了N个人都没有有办法。对了,对于你所说的,如果使用CString.Format(),是可以的,不会加空格的,这个还得讨论一下,就是怪,明天使用MFC来测试?,谁还有高见。
      

  5.   

    to vcbear:如果得到是指针的值,应该如何得到其内容值呢?
      

  6.   

    很简单呀,得到指针就用指针取值。对你不是问题吧。BYTE bt = (BYTE)*(pData+i);i++;
      

  7.   

    不过我的意思是: sprintf(Buffer,"%x",pData) // pData= 0x11223344;
     Buffer ="11223344".这个意思,就是把pData按一个Long的数字格式化了。
      

  8.   

    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吗?,请高手解惑!
      

  9.   

    难道是我理解错了?
    sprintf((p1,"%X",&p)得到的是存放p这个变量的地址,是一个常数,在编译时已固定好了(着句话是否有错误,有待搞手确认)
    sprintf(p1,"%X",p)得到的是p中存放的内容,即一个内存地址
      

  10.   

    &p是指针的指针。sxbyl的话是对的。在编译时这个指针的存放地址就应该定了,当然指针本身
    的值可以变。
    sprintf(p1,"%X",p)得到的是这个指针当时的值。如果要得到它指想的内容,得用 "%s"
    至于sprint的值不一样,我没法重现。我得到的是一样的.可能是vcmfc没有把注释掉的语句贴上来。
    vcmfc,不妨long ll = (long)&p;然后sprint( ll) 和k.Format(ll)看看是不是一样。
      

  11.   

    谢谢大家的指正,我改用如下:
    char p[]="abc";
    char *p1=(char*)malloc(6);
    memset(p1,0,6);
    sprintf(p1,"%X",p[0]);此时得到a的16进制61。
    若如此的话,我不是要一个一个来,有没有一次性转换成的函数?
      

  12.   

    咦,我的感觉是sprintf(p1,"&X",&p)得到的是内容
    sprintf(p1,"%X",p)是得到地址vcmfc,俺帮不上忙了
      

  13.   

    各位兄弟,帮我看一下我的这个问题呀!
    http://www.csdn.net/expert/TopicView.asp?id=47260