假设表示16进制的字符串 "3132" 相当于char[4]
他的内部表示 33 31 33 32 (16进制,ASCII码)
如何把"3132" 转成内部表示的31 32 相当于char[2]
 3  1  3  2 =>  1  2
33 31 33 32 => 31 32
需要自定义函数?

解决方案 »

  1.   

    char a[] = {"3132"};Hex2Char(char*p,int size,char *out)
    {
        char * tmp = p;
        short * tmpOut = out;
        for(int i =0; i<=size;i+=2)
        {
            tmp+=i;
            memcpy(&(tmpSh+1),tmp,2);
         }
    }
      

  2.   

    转换成字符发送。
    sprintf();
      

  3.   

    再请教2楼 wenxy1
    sprintf()可以吗?
    "0123456789abcdef"将变成"#Eg壂惋"  (我用UE看到的)
      

  4.   

    解决了..
    1楼的代码肯定有问题,不过启发了我.
    2楼你可能误解我的意思了.
    3楼,不懂你说的.我自定义函数了
    unsigned char* CTestDlg::hex2(const char* chmd5,unsigned char* chnet)
    {
    char* dbch=new char[3];
    dbch[2]='\0';
    for(int i=0;i<32;i+=2)
    {
    strncpy(dbch,chmd5+i,2);
    chnet[i/2]=strtol(dbch,0,16);
    }
    delete[] dbch;
    return chnet;}