我有一个包含例如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
已被弃用