• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Klasa dla operacji na IP.

0 głosów
119 wizyt
pytanie zadane 16 czerwca 2016 w C i C++ przez Ehlert VIP (105,350 p.)

Cześć.

Krótko zwięźle i na temat. Najlepszy sposób na trzymanie IP w klasie na którym będę operować.

short ip[4]; 
bool ip[4][8];
std::bitset<8> ip[4];
std::string ip;
char ip[4][8];
char * ip;

Chciałbym zaznaczyć, że chcę przeprowadzać operacje na bitach, więc ciągłe rzutowanie z char/string na liczbę będzie... Nieprofesjonalne, niewydajne?

2 odpowiedzi

+2 głosów
odpowiedź 17 czerwca 2016 przez draghan Szeryf (93,230 p.)
wybrane 17 czerwca 2016 przez Ehlert
 
Najlepsza
Użyj tego, z czym Ci dobrze. ;) Nie wiem, co konkretnie planujesz z tym działać, ale myślę że najwygodniej będzie dla Ciebie użyć std::bitset lub zwykłej tablicy shortów.

Nie wiem, jak wygląda sprawa przechowywaniem danych w std::bitset, ale sądzę że operacje wyłuskania bitu ze słowa (short tab[]) nie są wiele kosztowniejsze od dostępu do bitu z std::bitset.

Piszesz ten kod na PC?
komentarz 17 czerwca 2016 przez Ehlert VIP (105,350 p.)
Tak. Program do adresacji. Dzielenie na podsieci. Itd
komentarz 17 czerwca 2016 przez draghan Szeryf (93,230 p.)
W takim razie nie przejmowałbym się tak bardzo szybkością działania, chyba że to aplikacja mająca działać w czasie rzeczywistym (application in real time) lub ma to być aplikacja czasu rzeczywistego (real-time application).

Nie warto szukać tak błahych optymalizacji na etapie projektowania systemu. Zaprojektuj most dla tych danych, uniezależnij swój kod od konkretnej implementacji - a w razie zauważalnej niezadowalającej wydajności (w co szczerze wątpię), zmień implementację.
komentarz 17 czerwca 2016 przez Ehlert VIP (105,350 p.)
Doskonale rozumiem Twój tok myślenia ale mimo wszystko jak dla mnie jest on za mało zapobiegawczy. :) w tym przypadku wydajność idzie w parze z wygodą przeprowadzania operacji na bitach. Dzięki za dobre rady ;) Pozdrawiam
komentarz 17 czerwca 2016 przez draghan Szeryf (93,230 p.)

w tym przypadku wydajność idzie w parze z wygodą przeprowadzania operacji na bitach

Nadal nie mogę znaleźć innego wytłumaczenia dla tak pożądanej wydajności, niż działanie w czasie rzeczywistym. Niemniej wybrałbym chyba tablicę liczb - zdaje się być tutaj rozsądnym kompromisem.

Jeszcze jedno pytanie, bo mi to umknęło wcześniej - dlaczego chciałbyś użyć jako danych "nośnych" typu short? Przecież char jest ośmiobitowy, dla IPv4 byłby wystarczający - a sądząc po rozmiarach pozostałych Twoich propozycji, IPv6 nie planujesz obsługiwać.

+1 głos
odpowiedź 17 czerwca 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Może wrzucić adres IP do unsigned int ? 4 bajty dostajesz i nimi operujesz bez problemu

Podobne pytania

0 głosów
1 odpowiedź 128 wizyt
pytanie zadane 5 stycznia 2016 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,350 p.)
0 głosów
1 odpowiedź 58 wizyt
0 głosów
1 odpowiedź 66 wizyt
pytanie zadane 15 sierpnia w PHP, Symfony, Zend przez jzebala Użytkownik (760 p.)
Obowiązuje już zaktualizowany regulamin.

Czy wiesz, że nie musisz już odświeżać strony głównej?

Lista pytań i odpowiedzi aktualizuje się automatycznie!

38,633 zapytań

76,521 odpowiedzi

149,466 komentarzy

18,084 pasjonatów

Przeglądających: 249
Pasjonatów: 17 Gości: 232

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...