Konvertering fra Integer til en IP?

Tags:    .net

Hej udviklere

Måske er der en klog sjæl her på siden:
Jeg skal have lavet en .aspx side, hvor man kan se log'ninger af data.

Det så også fint nok og jeg kan da også fint smide det i et datagridview, men så har vi problemet.

Når ip'erne bliver gemt i vores database, bliver de gemt, som en integer.

Hvordan kan jeg konvertere dem tilbage til det rette format igen?

Har nogle lidt smart kode, der kan gøre dette?

Og hvordan gør man dette lettest og hvordan gør man, inden de bliver lagt over i gridview'ed på frontendet?.

Databasen kører på en mySQL server, hvis det har indflydelse på svaret.

Har det betydning for svaret, kan jeg tilføje, at jeg koder i sproget C#(.net)



Indlæg senest redigeret d. 16.05.2008 09:53 af Bruger #12696
3 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Det er skam ganske muligt at konvertere en IP til en 32-bit integer, da en IP som bekendt består af 4 grupper tal i intervallet 0-255 svarende til 8-bit integers. 4 grupper af 8-bits bliver så samlet til 32-bit.

Den ene mulighed for at konvertere til en normal IP er derfor at bruge nogle bitwise-operatorer til at få opdelt integeren rigtigt - men hvad der er endnu nemmere, er at bruge .NET's indbyggede IPAddress klasse:

Fold kodeboks ind/udKode 




Du kan ikke lave en IP-adresse om til en integer fra starten af, så vil dataene bliver truncated. Hvis IP'en f.eks. er 127.0.0.1 vil databasen ignorere alt efter det første komme og se det som 127.0, og det bliver oversat til 127. Og det kan jo ikke lade sig gøre at lave 127 om til 127.0.0.1 da alt efter 127 kan være fuldstændigt tilfældigt. Du er i stedet nødt til at gemme IP-adresserne som en string, f.eks. som en VARCHAR eller en tinytext.



Indlæg senest redigeret d. 15.05.2008 17:10 af Bruger #3275
Virker den indbyggede klasse også på en fedora server med .mono installeret ?

Det virker ganske fint nu, skulle dog supplere med en konvertering til uint .



Indlæg senest redigeret d. 16.05.2008 19:21 af Bruger #12696
t