反转函数(从字符到十六进制字符串)

发布于 2024-11-29 01:35:21 字数 511 浏览 1 评论 0原文

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

或十年 2024-12-06 01:35:21

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

使用格式调用 sprintf:

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

如果您要转换 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:

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文