mysql mac地址转换_Mac地址和字符串之间的转换

本文介绍了如何在C语言中将MAC地址转换为字符串格式,以及将字符串转换回MAC地址。提供了两个函数MacToStr和StrToMac,分别用于这两种转换操作,并给出了main函数的示例代码来演示转换过程。
摘要由CSDN通过智能技术生成

std::string MacToStr(UINT8 * pMac,const char chKen/* = ':'*/)

{

char szFormat[] = "%02X:%02X:%02X:%02X:%02X:%02X";

int nLen = strlen(szFormat);

if (chKen != ':')

{

for (int i = 2;i < nLen;i += 3)

{

szFormat[i] = chKen;

}

}

char szMac[32] = {0};

sprintf(szMac, szFormat, pMac[0], pMac[1], pMac[2], pMac[3], pMac[4], pMac[5]);

std::string strRet(szMac);

return strRet;

}

UINT8 charToData(const char ch)

{

switch(ch)

{

case '0': return 0;

case '1': return 1;

case '2': return 2;

case '3': return 3;

case '4': return 4;

case '5': return 5;

case '6': return 6;

case '7': return 7;

case '8': return 8;

case '9': return 9;

case 'a':

case 'A': return 10;

case 'b':

case 'B': return 11;

case 'c':

case 'C': return 12;

case 'd':

case 'D': return 13;

case 'e':

case 'E': return 14;

case 'f':

case 'F': return 15;

}

return 0;

}

bool StrToMac(const char * szMac,UINT8 * pMac)

{

const char * pTemp = szMac;

for (int i = 0;i < 6;++i)

{

pMac[i] = charToData(*pTemp++) * 16;

pMac[i] += charToData(*pTemp++);

pTemp++;

}

}

c语言有类似处理: int hex2num(char c)

{

if (c>='0' && c<='9') return c - '0';

if (c>='a' && c<='z') return c - 'a' + 10;//这里+10的原因是:比如16进制的a值为10

if (c>='A' && c<='Z') return c - 'A' + 10;

printf("unexpected char: %c", c);

return NON_NUM;

}

int str2mac(const charchar * szMac, charchar * pMac)

{

const charchar * pTemp = szMac;

int i;

for (i = 0;i < 6;++i)

{

pMac[i] = hex2num(*pTemp++) * 16;

pMac[i] += hex2num(*pTemp++);

}

return 0;

}

int main()

{

char szValue[32] = "11AABB22CC33 ";

char szBSSID[6] = "";

str2mac(szValue, szBSSID);

printf("Value = %s\n", szValue);

printf("bssid : %02x-%02x-%02x-%02x-%02x-%02x \n",

st_keys.bssid_name[0], st_keys.bssid_name[1],

st_keys.bssid_name[2], st_keys.bssid_name[3],

st_keys.bssid_name[4], st_keys.bssid_name[5]);

return 0;

}

效果:

Value = 11AABB22CC33

bssid = 11-aa-bb-22-cc-33

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值