Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Obliczanie dlugosci adresu IP
Mute
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.05.2011

Ostrzeżenie: (0%)
-----


Witam to moj pierwszy post i mam zawozdke w srodowisku JS

Czy jest jakas szybka mozliwosc liczenia dlugosci adresu IP ? Jest gotowa zmienna startowa i zmienna koncowa

Start ADDR:

VLAN_ADDR:

10.52.28.0

Stop ADDR:

VLAN_LAST:

10.52.29.254

Wiem ze rezultat odejmowania to 512


albo inny:

Start ADDR:

VLAN_ADDR:

10.52.64.11

Stop ADDR:

VLAN_LAST:

10.52.64.15
rezultat to 5


Ale jak sie to liczy w JS ?

Odejmwoanie dwoch IP: np



10.52.64.11 i 10.52.64.15

to bedzie 11 12 13 14 15 wiec to zezultat to: 5


albo
10.52.28.0 and 10.52.29.254

mamy 256 + 1 (bo liczymy od zera plus cala pula od 0 do 256) + 254+1 (bo liczymy od zera i 254 to jest 255 = czyli 257 + 255 = 512

Ale jak to zrobic w JS zeby on to tak fajnie bral, odejmowal ? etc?

Mozecie mi pomoc ?

pozdrawiam serdecznie,
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Po pierwsze to cała pula wynosi 256, bo 0-255. Nie ma adresu 10.52.28.256, czyli "dziabnąłeś" się o jeden i pełna pula adresów zawiera ich 511. A jak najprościej policzyć liczbę? Wykorzystaj fakt, że znasz adres ip i "policz różnicę wartości" obu adresów.
10.52.29.254 - 10.52.28.0 + 1 = //te +1 to dodatkowo jeden adres wynikający z racji uwzględnienia adresu odejmowanego (zawsze trzeba go dodać do puli)
10 * 256^3 + 52 * 256^2 + 29 * 256^1 + 254 * 256^0 - (10 * 256^3 + 52 * 256^2 + 28 * 256^1 + 0 * 256^0) + 1= // dwie najwyższe części się zredukują...
29 * 256 + 254 - 28 * 256 - 0 + 1 = ( 29 -28 ) * 256 + 254 + 1= 256+254+1 = 511

Tu inny przykład, z pominięciem już redukujących się części
10.52.29.0 - 10.52.28.255 + 1= (29 - 28) * 256 - 255 + 1= 256-255+1 = 2

I kolejny Twój:
10.52.64.15 - 10.52.64.11 + 1 = 15 - 11 + 1 = 5

Na skróty: przyjmijmy adresy
A.B.C.D i E.F.G.H oraz to, że pierwszy jest mniejszy od drugiego:
E.F.G.H - A.B.C.D = (E-A)*256^3 + (F-cool.gif*256^2 + (G-C)*256^1 + (H-D)*256^0 + 1(bonusowy do puli) =
(E-A)*16777216 + (F-cool.gif*65536 + (G-C)*256 + H-D + 1

Sprawdzamy?
10.52.29.254 - 10.52.28.0
(10-10)*16777216 + (52-52)*65536 + (29-28)*256 + 254-0 + 1 = 1*256 + 254 + 1 = 511 smile.gif

10.52.29.0 - 10.52.28.255
(10-10)*16777216 + (52-52)*65536 + (29-28)*256 + 0-255 + 1 = 1*256 - 255 + 1 = 2 smile.gif

Ludzie... Nauczcie się matematyki i algorytmy trochę pisać bo inaczej kiepsko widzę pokolenie przyszłych informatyków. Jeszcze trochę i dojdzie do sytuacji, że 40-letni programista będzie więcej wart niż kilkunastu 20-letnich :/


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 20:25