反转函数(从字符到十六进制字符串)
我需要反转这个函数,它用于将表示十六进制值的字符串转换为字符表示形式
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 的第二个(非常简单),但不能反转第一个!
I need to invert this function which it's used to covert strings representing hex values to char representation
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;
}
Note: Valid input are only strings consisting of 1234567890abcdef, and their length. I'm able to invert the second for cicle (quite easy) but not the first one!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
获取一个指向您想要以十六进制形式表示的内存的字符指针。为字符串结果分配 char[] 缓冲区。
使用格式调用 sprintf:
如果您要转换 uint64_t 或其他内容,您可以使用一些基本的指针算术来循环 stringbufferptr/chartotranslateptr,以便一次执行多个字符。
Get a char pointer to your memory that you want to represent in hex form. Allocate a char[] buffer for the string result.
Call sprintf with the formatting:
You can use some basic pointer arithmetic to cycle through stringbufferptr/chartotranslateptr in order to do multiple chars at a time if you're converting a uint64_t or something too.