BYTE buff[3]={0x12,0x45,0x78};
char temp[8];
HexToBinary(buff[0],temp);
上面的我是放在一个函数里面,下面的是一个十六进制转二进制的函数
void HexToBinary(BYTE value,char *buff)
{
    itoa(value,buff, 2);
}为什么调用 不成功呢??我的目的是想让buff="00010010" 也就是0x12

解决方案 »

  1.   

    void HexToBinary(BYTE value,char *buff)
    改为
    void HexToBinary(BYTE value,char *buff)
    {
    char sztemp[128] ={0}; sprintf(sztemp,"%08s",itoa(value,buff, 2));
    strcpy(buff,sztemp);
    }
    另外char temp[8];
    改为
    char temp[9];
      

  2.   

    void HexToBinary(BYTE value,char *buff)
    改为
    void HexToBinary(BYTE value,char *buff)
    {
    char sztemp[128] ={0}; sprintf(sztemp,"%08s",itoa(value,buff, 2));
    strcpy(buff,sztemp);
    }
    另外char temp[8];
    改为
    char temp[9];
      

  3.   

    看楼主的代码让人雾置云山啊char sztemp[128] = {0};
    itoa (sztemp, (int)0x12, 2);这样不就行了吗?
      

  4.   

    这位大哥,如果放在一个函数里面的话是可以的,但是用函数调用 的话就有错误
    error LNK2001: unresolved external symbol "public: void __thiscall CMy00Dlg::HexToBinary(unsigned char,char *)" (?HexToBinary@CMy00Dlg@@QAEXEPAD@Z)
    Debug/00.exe : fatal error LNK1120: 1 unresolved externals
    不知道是怎么回事,好纠结。。
      

  5.   

    楼主,我用你的代码得到的结果是10010,不是00010010,不知道你说的调试不成功是什么意思,编译不过么?而且如果你想要得到00010010,temp数组应该是9位吧
      

  6.   

    如果用一个函数写就可以,比如
    void fun()
    {
    BYTE buff[3]={0x12,0x45,0x78};
    char temp[8];
    char sztemp[128] ={0};
    sprintf(sztemp,"%08s",itoa(buff[0],&temp[0], 2));
    }
    这样的话得到的结果是00010010,这个是对的,
    不过我想用函数调用的方法做
    fun()
    {
    HexToBinary()
    }HexToBinary()
    {
    }
    这样就得会报错,感觉好奇怪
    这回应该懂我的意思了吧
    补充一下,我用的是VC6
      

  7.   

    你先重新建一个空的控制台程序项目,把这段程序跑一下,如果能过,那应该是你的mfc工程有问题,参照下这个帖子吧:ht tp: //apps.hi.baidu.com/share/detail/534372