首页 > 其他分享 >C语言 比较mac

C语言 比较mac

时间:2024-06-08 11:34:08浏览次数:11  
标签:tmp __ macaddr union unsigned C语言 char mac 比较

cilium 1.15.1

把单个mac拆分成2个整数,做减法比较。

#include <stdio.h>

union macaddr {
	struct {
		__uint32_t p1;
		__uint16_t p2;
	};
	__uint8_t addr[6];
};

static __always_inline int eth_addrcmp(const union macaddr *a,
				       const union macaddr *b)
{
	int tmp;

	tmp = a->p1 - b->p1;
	if (!tmp)
		tmp = a->p2 - b->p2;

	return tmp;
}

int main() {
    unsigned char mac1[6] = {1,1,1,1,1,1};
    unsigned char mac2[6] = {1,1,1,1,1,2};

    union macaddr *macaddr1 = (union macaddr*)mac1;
    union macaddr *macaddr2 = (union macaddr*)mac2;

    printf("%d\n", eth_addrcmp(macaddr1, macaddr2));

    unsigned char mac3[6] = {1,1,1,1,1,1};
    unsigned char mac4[6] = {1,1,1,1,1,1};

    union macaddr *macaddr3 = (union macaddr*)mac3;
    union macaddr *macaddr4 = (union macaddr*)mac4;

    printf("%d\n", eth_addrcmp(macaddr3, macaddr4));

    return 0;
}

标签:tmp,__,macaddr,union,unsigned,C语言,char,mac,比较
From: https://www.cnblogs.com/WJQ2017/p/18238457

相关文章

  • 【C语言】动态内存经典笔试题(上卷)
    前言本系列将详细讲解4道有关动态内存的经典笔试题,以助于加深对动态内存的理解。这些题目都非常经典,你可能随时会遇到它们,所以非常重要。本文讲解其中的前两题。第一题这个程序运行的结果是什么?voidGetMemory(char*p){p=(char*)malloc(100);}voidTest(......
  • go 操作mac
    cilium1.15.1生成随机macpackagemainimport( "crypto/rand" "fmt" "net")//MACaddressisannet.HardwareAddrencapsulationtoforceciliumtoonlyuseMAC-48.typeMACnet.HardwareAddr//Stringreturnsthestringrepr......
  • macbookrpro使用体验
    前言之前用的电脑是拯救者y70002020,用了四五年,年前就有换电脑的打算。计划就是买一个苹果电脑,在查看了挺多电脑,多方面对比后,最终还是买了Macbookpro。我买的笔记本的配置如下:购买14英寸的原因之前我的拯救者是15.6英寸的,背起来很沉,所以想换个14英寸的电脑。购买36GB内存的......
  • C语言详解(动态内存管理)1
    Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎~~......
  • 【因果推断】【Introduction to Causal Inference from a Machine Learning Perspecti
    第一章动机:为什么你可能关心1.1辛普森悖论考虑一个纯粹假设的未来,有一种被称为COVID-27的新疾病在人类中流行。在这个纯粹假设的未来,有两种治疗方法已经被开发出来:治疗A和治疗B。治疗B比治疗A更稀缺,因此目前接受治疗A和治疗B的比例大致为73%/27%。在一个只关心最大限度......
  • 解决C语言中scanf函数无法输入直接跳过的问题
    如果比较急的话,可以直接用这些方法,不急的话,建议读完。方法:1、看在调用该scanf函数前有没有用键盘输入过数据,有的话,可以尝试在该scanf函数前加个getchar();吃掉'\n'。2、在scanf前加一句"rewind(stdin);"(双引号里面的语句,不要把双引号也复制或打上去了),或者"fflush(stdin);",后......
  • C语言-----数组
    简单了解数组的知识以及数组的运用一、数组的概念二、一维数组1. 一维数组的创建与初始化2. 一维数组的使用三、二维数组1. 二维数组的创建与初始化2. 二维数组的使用四、用sizeof计算数组元素的个数一、数组的概念    数组可以说是目前为止学到的第......
  • c语言基础问题:1瓶汽水1元,2个空瓶可以换一瓶汽水,20元可以喝多少瓶汽水?
    老师布置的小组作业,好像是曾经的蓝桥杯题目,自己琢磨一下写出来了,写都写了还都加了注释,就想着不如发到这上面了,有遇到类似问题的可以看看,代码比较笨但是很好理解。#include<stdio.h>intmain()//1瓶汽水1元,2个空瓶可以换一瓶汽水,20元可以喝多少瓶汽水?{ intyuan=20;//本金......
  • 最大公约数(gcd())和最小公倍数(lcm())的c语言和c++详细解法
    最大公约数(gcd())和最小公倍数(lcm())最大公约数:定义:两个或多个整数共有的约数中最大的一个。例如:整数12和18,他们的公约数有1、2、3、6,其中最大的公约数是6。c语言解法:辗转相除法和更相减损法1、辗转相除法:思路:先求解较大的数除以较小的数的余数,再用较小的数除以前......
  • Linux下的C语言编程(指针)
    目录1一级指针1.1定义1.2指针的内存大小1.3指针的偏移1.3.1加法偏移1.3.2减法偏移2二级指针2.1定义2.2如何理解二级指针3三级指针3.1定义4数组和指针的关系4.1一维数组与指针的关系4.1.1数组名的性质4.1.2数组名与指针的地址偏移4.2二维数组与......