Mac地址和字符串之间的转换
2018-01-26 00:00
92 查看
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;
}
}
}
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;
}
int str2mac(const charchar * szMac, charchar * pMac)
{
const charchar * pTemp = szMac;
int i;
}
int main()
{
char szValue[32] = "11AABB22CC33 ";
char szBSSID[6] = "";
}
效果:
Value = 11AABB22CC33
bssid = 11-aa-bb-22-cc-33
{
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
相关文章推荐
- Mac地址和字符串之间的转换
- Mac地址和字符串之间的转换
- 网络字符串之间的转换
- java中字符串与字符数组之间的转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- java中字节数组和字符串、IO流和字节数组之间的转换
- js随记----整数与字符串之间的转换、将单选按钮的某项设成不可编辑的
- 数字与字符串之间的转换 (.toString,parseInt,parseFloat)
- js中字符串和数组之间相互转换
- node.js JS对象和JSON字符串之间的转换
- java字符串、字符串数组、list之间的转换
- c#实现16进制和字符串之间转换的代码
- c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
- DataTable 和字符串数组之间进行转换
- C++中字符串和数字之间的转换
- char*、string、CString各种字符串之间转换
- Python: 在Unicode和普通字符串之间转换
- 字符串与byte[]之间的转换
- MFC的中文路径的解决问题Ansi、Unicode、UTF8字符串之间的转换
- XML格式的字符串和DataSet之间的相互转换