1、c++中常需要用到CString和char*的转换
- 使用之前需要添加声名宏 USES_CONVERSION;
- CString 转 char* T2A()
- char* 转 CString A2T()
USES_CONVERSION;
CString cstr;
char* pChar;
pChar = T2A(cstr);
cstr = A2T(pChar);
2、网络字节和主机字节的转换
- 整型变量主机字节转网络字节htons()
- 整型变量网络字节转主机字节ntohs()
- 无符号长整形变量主机字节转网络字节htonl()
- 无符号长整形变量网络字节转主机字节ntohl()
3、网络字节的IP地址转点分十进制的IP地址字符串
char* IpToStr(unsigned long ulIP)
{
static char output[12][3 * 4 + 3 + 1];
static short which;
unsigned char* chIP;
chIP = (unsigned char*)&ulIP;
which = (which + 1 == 12 ? 0 : which + 1);
sprintf(output[which], "%d.%d.%d.%d", chIP[0], chIP[1], chIP[2], chIP[3]);
return output[which];
}
4、网络字节的MAC地址转十六进制的冒号分隔的MAC地址字符串
char* MacToStr(unsigned char* chMAC)
{
static unsigned char uMac[18];
for (int i = 0; i < 17; i++)
{
if ((i + 1) % 3)
{
if (!(i % 3))
{
if ((chMAC[i / 3] >> 4) < 0x0A)
{
uMac[i] = (chMAC[i / 3] >> 4) + 48;
}
else
{
uMac[i] = (chMAC[i / 3] >> 4) + 55;
}
if ((chMAC[i / 3] & 0x0F) < 0x0A)
{
uMac[i + 1] = (chMAC[i / 3] & 0x0F) + 48;
}
else
{
uMac[i + 1] = (chMAC[i / 3] & 0x0F) + 55;
}
}
}
else
{
uMac[i] = '-';
}
}
uMac[17] = '\0';
return (char*)uMac;
}
禁止转载。