`
jakielong
  • 浏览: 229212 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MAC文本格式地址to网络字节序

阅读更多

#include    <sys/types.h>
#include    <netinet/in.h>
#include    <stdio.h>
 
/* 
 * Check whether "cp" is a valid ascii representation
 * of an MAC address and convert to a binary address.
 * Returns 1 if the address is valid, 0 if not.
 */
int inet_mton(const char *cp, u_char *ap)
{
	int colons = 0;
        quad_t acc = 0, addr = 0;
  
      do {
      register char cc = *cp;
  
      switch (cc) {
      case '0':
      case '1':
      case '2':
      case '3':
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9':
          acc = acc * 16 + (cc - '0');
          break;
  
      case 'a':
      case 'b':
      case 'c':
      case 'd':
      case 'e':
      case 'f':
          acc = acc * 16 + (cc - 'a' + 10);
          break;
  
      case 'A':
      case 'B':
      case 'C':
      case 'D':
      case 'E':
      case 'F':
          acc = acc * 16 + (cc - 'A' + 10);
          break;
  
      case ':':
          if (++colons > 5) {
          return 0;
          }
          /* Fall down to case '\0' */
  
      case '\0':
          if (acc > 0xFF) {
          return 0;
          }
          addr = addr << 8 | acc;
          acc = 0;
          break;
  
      default:
          return 0;
      }
      } while (*cp++) ;
  
      /* Normalize the address */
      if (colons < 5) {
      addr <<= 8 * (5 - colons) ;
      }
  
      /* Store it if requested */
      if (ap) {
      /* Convert address to network bytes order(big-endian) */
      #if __BYTE_ORDER == __LITTLE_ENDIAN 
      int i = 0, j = 0;
      for(i=0,j=5; i<6,j>=0; i++,j--){
          ap[i] = ((u_char *) &addr)[j];
      }
      #elif __BYTE_ORDER == __BIG_ENDIAN
      ap = (u_char *) &addr;
      #endif
      }
  
      return 1;
}

int main()
{ /* test inet_mton(const char *cp, u_char *ap) */         
    char *macaddr = "00:06:1B:D1:73:1F";
     u_char m_addr[6];
 
    printf("%s\n", macaddr);
    if(inet_mton(macaddr, m_addr)){
       int i = 0;
        for(i=0; i<6; i++){
            printf("%2x:", m_addr[i]);
        }
    }

     return 0;
}
 
分享到:
评论

相关推荐

    协议分析系列:史上最强网络协议报文格式大全中文图文说明【华为】.zip

    以太网是目前最常见的局域网技术,其报文格式包括MAC头部,包含了源和目标的物理地址;而PPP则用于点对点连接,报文结构包括PPP头部、LCP(Link Control Protocol)或NCP(Network Control Protocol)协议字段等。 ...

    网络协议分析实验报告.doc

    一个完整的EthernetV2帧包括7字节的前导符、1字节的帧首定界符、6字节的目的MAC地址、6字节的源MAC地址、2字节的类型字段(或者802.3的长度字段)以及46到1500字节的数据字段,最后是4字节的帧尾校验(FCS)。...

    txt文件转换为bin文件

    在IT领域,文本文件(如.txt)和二进制文件(如.bin)是两种常见的数据存储格式,它们各自有着不同的用途和特点。本教程将详细解释如何将一个TXT文件转换成BIN文件,以及这种转换背后的基本概念。 首先,我们要了解...

    计算机网络技术.pdf

    8. ARP:地址解析协议(Address Resolution Protocol)用于将网络层(IP层)地址解析为数据链路层的物理地址(MAC地址)。 二、网络工具和软件 1. Wireshark:一种网络协议分析器,它可以捕获和交互式地浏览网络上...

    Bat-To-Exe-Converter

    《Bat-To-Exe-Converter:JavaFX将批处理文件转换为可执行程序》 在IT行业中,有时候我们需要将批处理脚本(.bat文件)转换为可执行程序(.exe文件),以便在不同的计算机环境中方便地运行。Bat-To-Exe-Converter是...

    完整版如何将文本转换为UTF-8码 .e.rar

    这个"完整版如何将文本转换为UTF-8码 .e.rar"压缩包文件很可能包含了一个详细的教程或工具,教你如何将文本文件从其他编码格式转换为UTF-8编码。 首先,我们需要理解什么是UTF-8。UTF,全称为Unicode ...

    计算机网络课程设计任务书.pdf

    - ARP(Address Resolution Protocol):地址解析协议,用于将IP地址解析为物理地址(如MAC地址)。 - RARP(Reverse Address Resolution Protocol):反向地址解析协议,用于将物理地址转换为IP地址。 6. 路由与...

    网络口令进行cmd控制

    nbtstat命令用于查看TCP/IP上的NetBIOS信息,可以获取远程主机的NETBIOS信息,包括其MAC地址等,需知目标IP地址。使用`-a`参数可以仅通过目标计算机名来获取其NETBIOS信息,无需IP地址。 ### 知识点三:网络路径...

    计算机网络模拟试卷答案.docx

    - **PPP协议**: PPP(Point-to-Point Protocol)协议是一种广泛使用的数据链路层协议,用于通过串行线路连接到网络,支持动态IP地址分配等功能。 - **曼彻斯特编码**: 曼彻斯特编码是一种自同步的编码方法,通过对每...

    计算机网络模拟试卷答案.pdf

    6. 地址解析协议(Address Resolution Protocol,ARP)负责将IP地址转换为硬件地址(MAC地址),以便于数据在网络中的物理传输。 7. 熟知端口(Well-known Port)是Internet Assigned Numbers Authority(IANA)...

    补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等

    子程序 Hex2Bin, 字节集, 公开, 十六进制文本到字节集 .参数 原文, 文本型 .子程序 Hex2Bin1, 文本型, 公开, 文本型-&gt;文本型 .参数 Hex, 文本型 .子程序 Hex2Dec, 整数型, 公开, 十六到十 .参数 十六进制转换数据,...

    计算机网络(第8版)名词解释

    32. MAC地址:Media Access Control address,网络设备的物理地址,用于在网络中唯一标识设备。 33. OSPF(开放最短路径优先):Open Shortest Path First,一种用于自治系统内部的链接状态路由协议,用于计算和...

    计算机网络工程 黄淮期末试题

    - ARP (Address Resolution Protocol) 用于将IP地址转换为物理地址(如MAC地址),是网络层到数据链路层转换的关键协议之一。 16. **地址转换技术** - 地址转换技术(NAT)主要用于解决私有网络中使用私有IP地址...

    计算机网络技术模拟试题模拟试题二.pdf

    6. 校园网架构:通常采用客户-服务器(Client-Server)或对等网络(Peer-to-Peer)模式,资源分布可以是集中式或分布式。 7. 运输层服务:包括无连接服务(如UDP)和面向连接服务(如TCP),前者不保证数据顺序和...

    南理工计算机考研复试资料(数据库+网络+上机)

    * MAC 地址(Media Access Control Address)是一种网络地址,用于在网络中标识设备。 5.5 以太网帧结构、基带传输、曼彻斯特编码 * 以太网帧结构(Ethernet Frame Structure)是一种网络数据包结构,用于在以太网...

    桂林理工大学——计算机网络复习题【答案】.doc

    7. **TTL**:在IP数据包中,TTL(Time To Live)字段用于限制数据包在网络中的生存时间,当TTL值减到0时,该数据包会被丢弃。 8. **HTTP协议**:浏览器与Web服务器之间通信通常采用HTTP(超文本传输协议)或HTTPS...

    Base64编解码Demo

    MAC地址是网络设备如网卡的物理地址,通常由六组两进制数字组成,每组用冒号或破折号分隔,每组可以表示为12位十六进制数。而IP地址是互联网上的逻辑地址,分为IPv4和IPv6两种,IPv4由四个十进制数构成,每个数范围0...

Global site tag (gtag.js) - Google Analytics