Пробую сам но уже 2 дня не могу сделать к своему стыду, и чувство что делаю блин криво как то)) задача закодировать ip адрес к примеру в 5 или 6 значное число а затем с помощью другой функции его раскодировать.... я пробую вот так, что бы запомнить координаты точек(разделителей в ip адресе)) я использую знак '-' но как то коряво выходит... а собрать потом назад этот ip не могу.
Вот мои функции(пишу в MFC): ip из нормального вида в закодированный я перевожу нормально(черточки конечно эти не совсем к стати) а остальное не работает.
| Код | 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)); }
CString DecryptIP(char str[32]) { char res[32]; memset(res, 0, sizeof(res)); int ip_points[3]={0,0,0},c=0;
for(int i=0; i < strlen(str); i++) { if(str[i] != (char)'-' && str[i] != (char)' ') res[c] = str[i]; if(str[i] == (char)'-') { //res[i]=' '; ip_points[c]=i; c++; } }
c=atoi(res) * 100000;
res[ip_points[0]]=(char)'.'; res[ip_points[1]]=(char)'.'; res[ip_points[2]]=(char)'.';
return CString("some"); }
|
Как то бы в этот код вставлять скрытую метку) для обозначения точек в ip. Если будет время ответь плиз) буду конечно стараться допилить свой вариант.. но а там.... |