Нужно закодировать IP в число(именно в целое число) к примеру в 5-7 цифр, а затем раскодировать назад. Подскажите какое самое простое решение для данной задачи на C++ Вот пример моей текущей функции(пишу в mfc) Code: CString EncryptIP() { WSADATA wsa_Data; int wsa_ReturnCode = WSAStartup(0x101,&wsa_Data); char szHostName[255]; gethostname(szHostName, 255); struct hostent *host_entry; host_entry=gethostbyname(szHostName); char * szLocalIP; szLocalIP = inet_ntoa (*(struct in_addr *)*host_entry->h_addr_list); WSACleanup(); char tmp[32]; memset(tmp, 0, sizeof(tmp)); strcpy(tmp,szLocalIP); char res[32]; memset(res, 0, sizeof(res)); int ip_points[3]={0,0,0},c=0; for(int i=0; i < strlen(tmp); i++) { if(tmp[i] != (char)'.' && tmp[i] != (char)' ') { res[c] = tmp[i]; c++; } if(tmp[i] == '.') { if(!ip_points[0]) { ip_points[0] = i; continue; } if(!ip_points[1]) { ip_points[1] = i; continue; } if(!ip_points[2]) { ip_points[2] = i; continue; } } } memset(tmp, 0, sizeof(tmp)); return CString(itoa(atoi(res)/100000,tmp,10))+ _T("-")+CString(itoa(ip_points[0],tmp,10))+ _T("-")+CString(itoa(ip_points[1],tmp,10))+_T("-")+CString(itoa(ip_points[2],tmp,10)); }
гугл -> "ip2long c++" PHP: long ip2long(char* ip){ return htonl(inet_addr(ip)); } void long2ip(long l, char buf[]){ struct in_addr addr; addr.s_addr = htonl(l); strcpy(buf, inet_ntoa(addr)); }