反转功能(从字符串到十六进制字符串)

时间:2011-08-10 16:19:18

标签: c hex

我需要反转这个函数,它用于将表示十六进制值的字符串转换为char表示

char * extochar(char * in, int inLen){
    int i,k;
    int resInt[inLen/2];
    char * resChar=malloc(inLen/2);

    k=0;
    for(i=0; i<inLen/2; i=i++){
        resInt[k]=chartoint(in[i*2])<<4;
        resInt[k]+=chartoint(in[(i*2)+1]);
        k++;
    }

    for(k=0; k<inLen/2;k++){
        resChar[k]=(char)resInt[k];
    }
    return resChar;
}

注意:有效输入只是由1234567890abcdef及其长度组成的字符串。我能够将第二个转换为cicle(非常简单)但不是第一个!

1 个答案:

答案 0 :(得分:0)

获取要以十六进制形式表示的内存的char指针。为字符串结果分配char []缓冲区。

使用格式化调用sprintf:

sprintf(stringBufferPtr, "%02hxx", charToTranslatePtr)

你可以使用一些基本的指针算法来循环通过stringbufferptr / chartotranslateptr,以便在你转换uint64_t时也可以一次执行多个字符。