繁体   English   中英

Python在C语言中的binascii.unhexlify函数

[英]Python's binascii.unhexlify function in C

我正在构建一个程序,该程序将输入看作是一个裸MAC地址,然后将其转换为二进制字符串。 我正在嵌入式系统上执行此操作,因此没有STD。 我一直在尝试类似于该问题的方法,但是两天后仍未取得任何进展,我对这些事情真的很不好。

我想要的是输出等于目标,请考虑以下因素:

#include <stdio.h>

int main() {
    const char* goal = "\xaa\xbb\xcc\xdd\xee\xff";
    printf("Goal: %s\n", goal);

    char* input = "aabbccddeeff";
    printf("Input: %s\n", input);

    char* output = NULL;
    // Magic code here

    if (output == goal) {
        printf("Did work! Yay!");
    } else {
        printf("Did not work, keep trying");
    }
}

谢谢,这是一个个人项目,我真的很想完成它

首先,您的比较应该使用strcmp否则总是错误的。

然后,我将读取字符串2字符乘2字符,并将每个“数字”转换为其值(0-15),然后将结果与平移组合

#include <stdio.h>
#include <string.h>

// helper function to convert a char 0-9 or a-f to its decimal value (0-16)
// if something else is passed returns 0...
int a2v(char c)
{
    if ((c>='0')&&(c<='9'))
    {
        return c-'0';
    }
    if ((c>='a')&&(c<='f'))
    {
        return c-'a'+10;
    }
    else return 0;
}

int main() {
    const char* goal = "\xaa\xbb\xcc\xdd\xee\xff";
    printf("Goal: %s\n", goal);

    const char* input = "aabbccddeeff";
    int i;

    char output[strlen(input)/2 + 1];
    char *ptr = output;

    for (i=0;i<strlen(input);i+=2)
    {

       *ptr++ = (a2v(input[i])<<4) + a2v(input[i]);
    }
    *ptr = '\0';
    printf("Goal: %s\n", output);

    if (strcmp(output,goal)==0) {
        printf("Did work! Yay!");
    } else {
        printf("Did not work, keep trying");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM