我又一个char型数组,想转为十六进制
比如unsigned char data[4]={44,55,66,77};现在我想得到的是
a=data[0];
b=data[1];
c=data[2];
d=data[3];
通过上面 得到的是 
a=44;
b=55;
c=66;
d=77;
而我想要得到的是
a=0x44;
b=0x55;
c=0x66;
d=0x77;
因为我的char型数组比较庞大,有什么比较简便的方法吗?

解决方案 »

  1.   


    unsigned char data[] = {44,55,66,77};
    vector<int> vec;
    CString str(_T(""));
    for(int i=0; i<sizeof(data)/sizeof(data[0]); i++)
    {
    str.Format(_T("0x%d"), data[i]);
    vec.push_back(_tcstoul(str, NULL, 16));
    }
      

  2.   

    unsigned char data[4]={44,55,66,77};
    char ch[32]={0};    unsigned char a,b,c,d;
        
    sprintf(ch,"%x",data[0]);
    sscanf(ch,"%x",&a);

    sprintf(ch,"%x",data[1]);
    sscanf(ch,"%x",&b); sprintf(ch,"%x",data[2]);
    sscanf(ch,"%x",&c); sprintf(ch,"%x",data[3]);
    sscanf(ch,"%x",&d);
      

  3.   

        unsigned char data[4]={44,55,66,77};
        char ch[32]={0};    for(int i=0;i<4;i++)
        {
            sprintf(ch,"%x",data[i]);
            sscanf(ch,"%x",&data[i]);
        }好了,data数组自己转自己,全搞定了
      

  4.   

    改正一下下

        unsigned char data[4]={44,55,66,77};
        char ch[32]={0};
        unsigned char c;
        for(int i=0;i<4;i++)
        {
    memset(ch,0,32);
    sprintf(ch,"%d",data[i]);  //这个要用%d
    sscanf(ch,"%2x",&c);
    data[i]=c;
        }
      

  5.   

    给你几行代码看看不用字符格式怎么转,要是真的很庞大这个快。
    char D2H(char a)
    {
    a=a%100; //禁止百位
    char b=a/10;
    b<<=4;
    b |= a%10;
    return b;
    }可以用下边的测试一下
    char c[] = {23,34,45,56,67,1,2,3,4,105};
    for(int i=0; i<10; i++)
    {
    c[i] = D2H(c[i]);
    }
      

  6.   

    数组中不是全部是数字
    还有这样的数据,每个数字都只有两位数
    char data[]={11,f4,2e,ff.......}
    有没有什么方法 能直接在每个数字前面加上‘0X’,就像这样
    a=0x11;
    b=0xF4;
    c=0x2E;
    d=0xFF;
      

  7.   

    数组中不是全部是数字
    还有这样的数据,每个数字都只有两位数
    char data[]={11,f4,2e,ff.......}
    有没有什么方法 能直接在每个数字前面加上‘0X’,就像这样
    a=0x11;
    b=0xF4;
    c=0x2E;
    d=0xFF;
      

  8.   

    报错: 'D2H' : undeclared identifier
      

  9.   

    好奇怪,你的11,f4,2e,ff可以直接初始化,前面不需要加0x?
      

  10.   

    从44到0x44我认为你是有特殊需求
    从F4到0xF4......
    你不用转换
    真的
    我觉得你误会了
    你这些数据直接用就行了
    另外F4不是字符串,是数