![]() |
![]() ![]() |
![]() |
![]()
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, |
|
|
![]()
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- ![]() (E-A)*16777216 + (F- ![]() 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 ![]() 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 ![]() 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
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 13.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki za odpowiedz.
Ale jak to ugryżć w javie script. Zakladajac ze te IP dajemy jako stringi.... Kod function countIP(startIP,endIP){ var d1=Number(endIP.split('.')[2])-Number(startIP.split('.')[2]); var d2=Number(endIP.split('.')[3])-Number(startIP.split('.')[3])+1; var n=d1*256+d1+d2; return n; } Wywala mi NaN |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Któryś z elementów tablicy startIP lub endIP zawiera coś więcej niż tylko cyferki... Byś zerknął do manuala to byś się dowiedział, że NaN wyskakuje gdy Number() dostaje jako parametr choćby głupią spację.
-------------------- 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
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 13.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Analizowalem ta kalkulacja i mam pytanie. Czy aby liczyc ALE W ZAKRESIE 1 do 254 nalezy mnozyc * 254 ? np: 10.52.0.15 - 10.52.0.4 (10 * 254^3 + 52 * 254^2 + 0 * 254^1 + 15 * 254^0) - 10 * 254^3 + 52 * 254^2 + 0 * 254^1 + 4 * 254^0 +1 ![]() 10.52.93.254 - 10.52.92.1 (10 * 254^3 + 52 * 254^2 + 93 * 254^1 + 254 * 254^0) - 10 * 254^3 + 52 * 254^2 + 92 * 254^1 + 1 * 254^0 +1 ![]() i tez +1 na koncu ? Ta kalkulacja obejmuje od 0 do 255 A co jesli trzeba liczyc od 1 do 254 ? Prosze o pomoc. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 04:49 |