我需要反转这个函数,它用于将表示十六进制值的字符串转换为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(非常简单)但不是第一个!
答案 0 :(得分:0)
获取要以十六进制形式表示的内存的char指针。为字符串结果分配char []缓冲区。
使用格式化调用sprintf:
sprintf(stringBufferPtr, "%02hxx", charToTranslatePtr)
你可以使用一些基本的指针算法来循环通过stringbufferptr / chartotranslateptr,以便在你转换uint64_t时也可以一次执行多个字符。