07. september 2005 - 08:13
Der er
15 kommentarer og 1 løsning
IP til decimal, og tilbage igen
Hejsa Hvordan kan jeg lave en IP om til decimal, og tilbage igen, så det er muligt at gennemløbe vha. en løkke? Mvh. H. Mortensen
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
07. september 2005 - 08:16
#1
prøv: IPAddress.Parse("123.123.123.123").GetAddressBytes()
07. september 2005 - 08:35
#2
Hvordan kan jeg bruge den ? Så vidt jeg kan se, får jeg et array med de 4 okteller.
07. september 2005 - 08:37
#3
ja var det ikke det som du mente med at lave en IP om til decimal ?
07. september 2005 - 08:40
#4
Jeg forsøger at gennemløbe alle IP'er fra en given start til slut. Fx. 111.222.333.1 - 111.222.334.255 Jeg har så forsøgt mig med denne formel, som omregner til et decimal tal, hvor okX er de 4 okteller. Den giver mig et tal der stiger med én, når IP'en stiger med én. (ok1 * (256 ^ 3)) + (ok2 * (256 ^ 2)) + (ok3 * 256) + ok4
07. september 2005 - 09:00
#5
den obsolete IPAddress .Address returnerer denne værdi
07. september 2005 - 09:01
#6
men kan du ikke bare tælle op i de 4 oktetter ? (du skal selvfølgelig huske mente !)
07. september 2005 - 09:08
#7
Jo, men der må vel findes en formel til at regne den anden vej ? I fx. php er der en metode til det (long2ip), så det kan lade sig gøre.
07. september 2005 - 09:11
#8
du mener som ok4 = ip % 256; ok3 = (ip / 256) % 256; ok2 = (ip / (256*256)) % 256; ok1 = ip / (256*256*256);
07. september 2005 - 09:11
#9
[shift og mask er sikkert hurigere men ...]
07. september 2005 - 09:24
#10
Jo, det ser meget rigtig ud. Du må gerne ligge et svar.
07. september 2005 - 09:24
#11
En løsning uden alle de beregninger kunne være IPAddress ip_start = IPAddress.Parse("1.1.1.1"); IPAddress ip_slut = IPAddress.Parse("1.1.2.3"); while(ip_start.Address != ip_slut.Address) { ip_start.Address = IPAddress.HostToNetworkOrder(1+IPAddress.NetworkToHostOrder((int)ip_start.Address)); Console.WriteLine(ip_start); }
07. september 2005 - 10:07
#12
hm der er givetvis nok et carry bit problem i den løsning
07. september 2005 - 20:11
#13
svar
07. september 2005 - 20:24
#14
den kode skal vist rettes en del til IPAddress ip_start = IPAddress.Parse("1.1.1.1"); IPAddress ip_slut = IPAddress.Parse("1.1.2.3"); IPAddress ip = ip_start; while(IPAddress.NetworkToHostOrder((int)ip.Address) <= IPAddress.NetworkToHostOrder((int)ip_slut.Address)) { Console.WriteLine(ip); ip.Address = IPAddress.HostToNetworkOrder(IPAddress.NetworkToHostOrder((int)ip.Address)+1); } men .Address er som sagt obsoletr kald det en IPv6 readiness feature
08. september 2005 - 07:14
#15
Hvad menes med: .Address er obsolete
08. september 2005 - 07:45
#16
at Microsoft fraråder brugen af den
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.