实现MAC地址转换成十六进制

原创 2016年08月30日 17:57:37

    实现将mac地址(如:"00:FF:0A:0C:06:03")转换成十六进制存储的00FF0A0C0603

由以下两种方法实现:

方法一:

#include "stdio.h"
#include "string.h"
  
static unsigned char SwitchChar(char chStr)
{
    if (chStr >= '0' && chStr <= '9')
    {
        return (chStr - '0');
    }
    else if (chStr >= 'A' && chStr <= 'f')
    {
        return (chStr - 'A' + 10);
    }
    else if (chStr >= 'a' && chStr <= 'f')
    {
        return (chStr - 'a' + 10);
    }
    else
    {
        return 0;
    }
}
 
int main(void)
{
    char achSrc[] = "00:FF:0A:0C:06:03";
    unsigned char mac[6] = {0};
    char *pchStr = strtok(achSrc, ":");
    int  nIdx = 0;
    int  nTotal = 0;
 
    while (NULL != pchStr)
    {
        abyDst[nTotal++] = (SwitchChar(*pchStr) << 4) | SwitchChar(*(pchStr+1));
        pchStr = strtok(NULL, ":");
    }
 
    printf("Mac is %s,mac is %02x%02x%02x%02x%02x%02x\n",achSrc,mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);

    return 0;
}


方法二:

int main(void)
{
    char achSrc[] = "00:FF:0A:0C:06:03";
    unsigned char mac[6] = {0};
 
    sscanf(achSrc, "%02x:%02x:%02x:%02x:%02x:%02x", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]); 
    printf("Mac is %s,mac is %02x%02x%02x%02x%02x%02x\n",achSrc,mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);

    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组

#include #include unsigned char a2x(const char c) { switch(c) { case '0'......
  • Aniu127
  • Aniu127
  • 2014年03月05日 17:34
  • 997

mac地址转换为长整形

最近工作中需要在网络中传递mac地址,需要将mac地址转换为六个字节,网上找了找资料,基本的思路就是用根据冒号将mac地址分为六段, 每段看做一个十六进制数,转化为十进制数后,分配赋值给六字节数组的每...

Mac地址和字符串之间的转换

废话少说,直接上代码std::string MacConvert::MacToStr(UINT8 * pMac,const char chKen/* = ':'*/){char szFormat[] ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

MAC地址 中 MAC地址字符串 到 MAC地址数值的 转换

转自:http://hi.baidu.com/xlt1888/item/b6bc48910c745fe0291647e7 MAC地址 中 MAC地址字符串 到 MAC地址数值的 转换 MAC地址为...
  • occupy8
  • occupy8
  • 2013年07月12日 15:40
  • 7594

mac地址转换为6字节数组--strtoul函数

最近工作中需要在网络中传递mac地址,需要将mac地址转换为六个字节,网上找了找资料,基本的思路就是用根据冒号将mac地址分为六段,  每段看做一个十六进制数,转化为十进制数后,分配赋值给六字节数组的...

获取mac地址并以十六进制格式加冒号分隔显示

unsigned char* getMacAddr() {     char output[wifi_length] = {0};     int rec_size = 0;     int ...

存mac地址实际上用6个字节/字符就OK了

最近发现很多地方都是用6个字节来存mac地址, 仔细想了一下, 觉得还不错, 挺有意思的, 所以下面我也来玩一下: #include using namespace std; int main()...
  • stpeace
  • stpeace
  • 2015年03月29日 23:54
  • 2174

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

取mac信息的示例代码

// TestHardwareInfo.cpp : Defines the entry point for the console application. // #include "stdafx....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现MAC地址转换成十六进制
举报原因:
原因补充:

(最多只允许输入30个字)