mac地址自增
来源:互联网 发布:unity3d象棋素材 编辑:程序博客网 时间:2024/06/10 06:27
mac地址又叫硬件地址,占用6个字节的空间,一般采用16进制并以冒号分割各个字节的方式表示。在32位的机器中,一般long型占4个字节,long long占8个字节,因此,我们可以将mac地址存储在long long的内存空间中,然后对其做加一运算。
代码如下:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>int main(int argc, char **argv){ char mac[] = "00:0C:29:54:E2:F4"; long long mac_space = 0; int i = 0, count = strlen(mac); if(sizeof(long long) < 6) { printf("long long is too short\n"); return -1; } while(1) { for(i = 0, mac_space = 0; i < strlen(mac); i++) { if(mac[i] >= '0' && mac[i] <= '9') { mac_space = mac_space << 4; mac_space += mac[i] - '0'; } else if(mac[i] >= 'a' && mac[i] <= 'f') { mac_space = mac_space << 4; mac_space += mac[i] - 'a' + 10; } else if(mac[i] >= 'A' && mac[i] <= 'F') { mac_space = mac_space << 4; mac_space += mac[i] - 'A' + 10; } else if(mac[i] == ':' && (i + 1) % 3 == 0) { continue; } else { printf("format error\n"); return -1; } } mac_space++; sprintf(mac, "%012llx", mac_space); /*下面循环是为了插入冒号*/ for(i = 0; i < 12 - 2; i++) { /*请原谅我自作聪明*/ mac[count - 1 - i - (i)/ 2] = mac[11 - i]; if(i != 0 && (i) % 2 == 0) { mac[count - i - (i)/ 2] = ':'; } } /*此时count - i - i/2应当为2*/ mac[count - i - (i)/ 2] = ':'; printf("now mac = %s\n", mac); sleep(1); } return 0;}
当然,也不使用long long型变量也可以做到mac地址自增,且听下回分解。
0 0
- mac地址自增
- mac地址自增(通用简易版)
- MAC地址
- MAC地址
- MAC地址
- MAC地址
- MAC地址
- MAC地址
- Mac地址
- MAC地址
- mac地址
- MAC地址
- MAC地址
- MAC地址
- mac地址
- MAC地址
- MAC地址
- MAC地址
- Android开发之恢复Activity与fragment的状态
- 数组和延时在fpga中使用
- linux信号之基本概念
- 使用PowerDesigner数据库建模
- hdoj 5807 Keep In Touch
- mac地址自增
- 大端小端模式简单介绍 以及三种检测大小端存储的方法
- C++及C中的 string char指针及char数组
- 初学HTML5--CSS样式(三)
- word_reverse
- redis之incrby、decrby、strlen、hsetnx、hgetall、hmset、hmget、hincrby、hlen、hdel、hkeys、hvals、hgetall
- Java中 this的用法
- CodeForces-630F.Selection of Personnel
- 字符串加解密