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

Klasa dla operacji na IP.

Ultraszybki serwer VPS NVMe BIZNES
0 głosów
122 wizyt
pytanie zadane 16 czerwca 2016 w C i C++ przez Ehlert VIP (118,130 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 (97,250 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 (118,130 p.)
Tak. Program do adresacji. Dzielenie na podsieci. Itd
komentarz 17 czerwca 2016 przez draghan Szeryf (97,250 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 (118,130 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 (97,250 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,890 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ź 156 wizyt
pytanie zadane 5 stycznia 2016 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,350 p.)
0 głosów
2 odpowiedzi 131 wizyt
pytanie zadane 31 października 2017 w Java przez Neron Nowicjusz (180 p.)
0 głosów
1 odpowiedź 65 wizyt
pytanie zadane 24 marca 2017 w Sieci komputerowe, internet przez kamil3344 Nowicjusz (120 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.
Ciekawy innych porad? Odwiedź tę stronę!

44,318 zapytań

84,152 odpowiedzi

167,548 komentarzy

21,224 pasjonatów

Przeglądających: 302
Pasjonatów: 15 Gości: 287

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.

...