MAC地址在18字节及6字节之间的转换

#include <stdio.h>
#include <string.h>

#define unsigned int u32
#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
#define MACSTOL(a)  (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
#define MACLTOS(a)  (u32 *)&(a)[0], (u32 *)&(a)[1], (u32 *)&(a)[2], (u32 *)&(a)[3], (u32 *)&(a)[4], (u32 *)&(a)[5]

int main(int argc,char argv[])
{
    char mac_add[18] = "00:12:32:4a:56:7b";
    char mac_add_tmp[6] = {0};
    char mac_add_test[18] = {0};
    
    /*用sscanf将18字节转为6字节,有的编译器可以不用(u32 *)进行强转*/
    sscanf(mac_add, MACSTR, MACLTOS(mac_add_tmp));
    /*6字节转为18字节*/
    snprintf(mac_add_test, 18, MACSTR, MACSTOL(mac_add));
    
    printf("original : %s  new : %s\n", mac_add, mac_add_test);
    return 0;
}
时间: 2024-08-05 02:54:04

MAC地址在18字节及6字节之间的转换的相关文章

Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换

public class DigitalTrans { /** * 数字字符串转ASCII码字符串 * * @param String * 字符串 * @return ASCII字符串 */ public static String StringToAsciiString(String content) { String result = ""; int max = content.length(); for (int i = 0; i < max; i++) { char c

MAC地址(单播、广播、组播、数据收发)

MAC地址 网络设备的MAC地址是全球唯一的.MAC地址长度为48比特,通常用十六进制表示.MAC地址包含两部分:前24比特是组织唯一标识符(OUI,OrganizationallyUniqueIdentifier),由IEEE统一分配给设备制造商. 例如,华为的网络产品的MAC地址前24比特是0x00e0fc.后24位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备). 单播 局域网上的帧可以通过三种方式发送.第一种是单播,指从单一

MAC地址生成回环IPv6地址

设备48位MAC地址为00-60-80-52-f9-d8 在第三字节和第四字节之间插入FF-FE,形成64位地址地址00-60-08-FF-FE-52-F9-D8 对首字节0X00的第二个最低位求反,则变成0X02. 在前面补充FE80::,填满16字节(128位),最后为FE80::0260:08FF:FE52:F9D8.

MAC地址组成

网络设备的MAC地址是全球唯一的.MAC地址长度为48比特,通常用十六进制表示.MAC地址包含两部分:前24比特是组织唯一标识符(OUI,OrganizationallyUniqueIdentifier),由IEEE统一分配给设备制造商. 单播: 局域网上的帧可以通过三种方式发送.第一种是单播,指从单一的源端发送到单一的目的端.每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型.对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是

OpenWrt Mac地址修改错误SIOCSIFHWADDR: Cannot assign requested address

问题 设置mac地址 11:22:33:44:55:66, 在OpenWrt正在开发的主trunk上就没有SIOCSIFHWADDR: Cannot assign requested address, 这个问题. 但是到attitude adjustment最新的trunk上就出现了,估计是内核版本不同,导致都mac地址的限制不同导致. 最新的反而不严格了?这个不科学啊. 解决方法: http://blog.csdn.net/evenness/article/details/7674038 ht

【转载】取得系统中网卡MAC地址的三种方法

From:http://blog.csdn.net/zhangting1987/article/details/2732135 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址,一般说网卡地址我是指物理地址,不知道别人怎么看?物理地址指的是网卡上的存放地址的ROM里的地址,mac地址是这块卡工作的时候用的地址,一般情况下这两个地址是一样的,所以很多人都混用了,甚至不知道有区别  -_-# 网卡工作的时候,一个以太网帧60到1514(不包括crc),帧的crc是网卡自动加的

【安全牛学习笔记】Mac地址绑定攻击

MAC地址绑定攻击 MAC绑定                           管理员误以为MAC绑定是一种安全机制 限制可以关联的客户端MAC地址                                                                   准备AP                                AP基本配置                        Open认证                          开启无线过滤   

Java/JSP获得客户端网卡MAC地址的三种方法解析

java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种. 1.通过命令方式,在客户端执行Ipconfig 等等.(java/jsp) 2.通过ActiveX的方法.(jsp) 3.通过向137的端口发送查询指令的方法.(java/jsp) 简介: 第一种方法,在真正用到时候不知道为什么获得mac地址的指令阻塞了,不往下继续执行.而且速度是这三种方法中最慢的一种. 代码如下: String sip=""; String smac=""; sip = requ

Linux下永久修改MAC地址和ifconfig命令总结

1. 固定一个MAC地址,特别是在使用多个虚拟机的时候 linux环境下: 用root身份登录,在/etc/rc.d/rc.local里加上这三句 ifconfig eth0 down ifconfig eth0 hw ether 00:0C:18:EF:FF:ED ifconfig eth0 up 这样重新reboot后就不怕MAC复原了. 2. ifconfig命令(转载http://www.cnblogs.com/taobataoma/archive/2007/12/27/1016689.