我想解释一个格式00:11:22:33:44:55
为 6 个二进制字节的 mac 字符串,即 0x00、0x11、0x22、0x33、0x44、0x55。我尝试使用以下代码来完成此操作:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main (void)
{
char mac[16]={0};
char binmac[8]={0};
char* pEnd;
strcpy(mac,"00:11:22:33:44:55");
printf("mac %s\n", mac);
binmac[0] = strtol (mac, &pEnd, 16);
binmac[1] = strtol (pEnd+1, &pEnd, 16);
binmac[2] = strtol (pEnd+1, &pEnd, 16);
binmac[3] = strtol (pEnd+1, &pEnd, 16);
binmac[4] = strtol (pEnd+1, &pEnd, 16);
binmac[5] = strtol (pEnd+1, NULL, 16);
printf ("binmac 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n",binmac[0], binmac[1], binmac[2], binmac[3], binmac[4], binmac[5]);
}
但我得到的结果看起来不正确:
mac 00:11:22:33:44:55
binmac 0x00 0x11 0x22 0x33 0x44 0x05
我想知道为什么最后一个字节没有得到正确解释。谢谢