struct ethernet_header
{
u_char ether_dhost[ ETHER_ADDR_LEN];
u_char ether_shost[ETHER_ADDR_LEN];
u_short ether_type;
};
for(i = 0;i <6; i++)
printf("dest ether:%x",ethernet->ether_dhost);
如何以正确的可读形式打印以太网地址,每个字节后都有空格我得到的订单是十六进制的。这里,以太网是指向结构
ethernet_header
的指针。 最佳答案
应该是这样的:
char mac[6 * 2 + 5 + 1];
for(size_t i = 0, pos = 0; i < sizeof ethernet->ether_dhost; i++)
{
if(i > 0)
mac[pos++] = ':';
sprintf(mac + pos, "%02x", (unsigned int) ethernet->ether_dhost[i] & 0xffu);
}
这也会在每个字节之间插入冒号,因此输出看起来像
DE:AD:BE:EF:BA:BE
这是以太网的MAC地址通常的格式。关于c - 将以太网地址转换为可读形式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4265016/