将char数组转换为hex(unsigned int)数组

时间:2016-09-12 18:00:38

标签: c arrays macos

我有一个包含例如AA:BB:CC:DD:EE:FF的数组。我已将其解析为大小为12的字符数组,其中每个索引现在都包含这些数字。

我必须将这个已解析的数组转换为unsigned int数组,以将其用作ARP头。

换句话说,输入为AA:BB:CC:DD:EE:FF,我将其分解为parsed_mac = {A, A, B, B, C, C, D, D, E, E, F, F},我需要使用此parsed_mac数组生成一个tgt_mac数组,看起来像tgt_mac = {0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF}

截至目前,我的tgt_mac属于char类型。一旦我理解了如何正确处理数据,我就会将其更改为unsigned int。

void parse_tgt_mac(char unformatted_mac[], char **tgt_mac)
{
    char parsed_mac[12] = {0};
    char* token;
    char* delimitter = ":";
    int i = 1;

    printf("parse_tgt_mac: %s\n", unformatted_mac);
    token = strtok(unformatted_mac, delimitter);
    while(token != NULL)
    {
        printf("%d\n", i);
        printf("%s\n", token);
        strcat(parsed_mac, token);
        printf("formatted_mac[]: %s\n", parsed_mac);
        token = strtok(NULL, delimitter);       
        i++;
        if(i > 11)
            break;
    }
    for(i = 0; i < 12; i++)
    {
        printf("parsed_mac[%d]: %c\n", i, parsed_mac[i]);
    }
    *tgt_mac = parsed_mac;
    printf("tgt_mac: %s\n", *tgt_mac);
}

unformatted_mac[]的输入用作AA:BB:CC:DD:EE:FF提供以下输出:

parse_tgt_mac: AA:BB:CC:DD:EE:FF
formatted_mac[]: AA
formatted_mac[]: AABB
formatted_mac[]: AABBCC
formatted_mac[]: AABBCCDD
formatted_mac[]: AABBCCDDEE
formatted_mac[]: AABBCCDDEEFF
parsed_mac[0]: A
parsed_mac[1]: A
parsed_mac[2]: B
parsed_mac[3]: B
parsed_mac[4]: C
parsed_mac[5]: C
parsed_mac[6]: D
parsed_mac[7]: D
parsed_mac[8]: E
parsed_mac[9]: E
parsed_mac[10]: F
parsed_mac[11]: F
tgt_mac: AABBCCDDEEFF

PS。我知道在某些版本中,strtok已被弃用

0 个答案:

没有答案