Adres IP w postaci BIN i HEX

petro
Użytkownik
Użytkownik
Posty: 293
Rejestracja: 15 lut 2005, o 22:55
Płeć: Mężczyzna
Lokalizacja: sam nie wiem
Podziękował: 56 razy

Adres IP w postaci BIN i HEX

Post autor: petro »

Witam serdecznie, mam za zadanie napisać prosty programik do zmiany podanego nr IP na system binarny i dziesiątkowy. Nie wiam jak przekonwertować ip, aby było w notacji kropkowej i było np. w postaci binarnej. Mógłby ktoś podsunąć mi jakieś wskazówki?

Oto aktualny kod programu:

Kod: Zaznacz cały

#include <iostream>
#include <netdb.h>
#include <arpa/inet.h>


using namespace std;

int main(int argc, char **argv) {

   struct hostent *phe;

   if(argc < 2) {
     cout << "Sposob uzycia: " << argv[0] << " <numer_ip>" << endl;
     return 0;
   }

   if((phe = gethostbyname(argv[1])) == NULL) {
     cout << "Bledny nr IP: " << argv[1] << endl;
   }

   cout << phe->h_name << endl;
   cout << inet_ntoa(*(struct in_addr *)phe->h_addr)  << endl;
}
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Adres IP w postaci BIN i HEX

Post autor: kadiii »

Funkcja inet_ntoa zwraca stringa, ip masz w postaci binarnej na 4 oktetach bitów, możesz więc pobawić się na stringach poodzielać liczby między kropkami i przekonwertować z dziesietnej postaci na binarną. Trochę ogólnikami, ale prosisz o wskazówki a kolejny krok to byłoby jjuż tylko rozwiazanie. Myślę jednak, że nie powinno być problemuoperacje na stringach są dość proste, można używać gotowych funkcji lub samemu je napisać, konwersja liczbi na binarną też nie powinna sprawić problemu, trzeba jedynie pamiętac, że jest ona na 4 oktetach bitów, czyli zapis uzupełniamy o zera na przodzie w razie potrzeby.
ODPOWIEDZ