Hi,
ich glaub, ich versteh nu, was Du meinst
Delphi-Quellcode:
var
IP : Longword;
// IP -> Longword deshalb, weil 32-bittig
begin
// Initialisieren
IP := 0;
// IP-Adresse aus den 4 Bytes zusammensetzen
IP := Byte(IP_Block_1)
SHL 24 +
// 1. Block mit 8 Bit Länge um 24 Bit nach links verschieben
Byte(IP_Block_2)
SHL 16 +
// 2. Block mit 8 Bit Länge um 16 Bit nach links verschieben
Byte(IP_Block_3)
SHL 8 +
// 3. Block mit 8 Bit Länge um 8 Bit nach links verschieben
Byte(IP_Block_4);
// 4. Block mit 8 Bit Länge bleibt "ganz hinten" stehen
end;
Wie
IP-Adressen aufgebaut sind etc. scheint ja klar zu sein, darum nur dieser kurze Code.
Um die
IP-Adresse aus den einzelnen Blöcken zusammensetzen zu können, brauchen wir eine 32-bittige Variable (hier "
ip").
IP_Block_1 bis IP_Block_4 sind die 4 Blöcke, die definitionsgemäß Werte von 0 bis 255 annehmen können, da sie ja einzelne Bytes repräsentieren. Ich habe nochmal einen Typecast nach Byte dazugeschrieben, wenn IP_Block_x schon vom Typ Byte ist, kann das natürlich wegfallen.
Mittels
SHL werden die Bytes nun an ihre "Position" innerhalb der 32-Bit-
IP verschoben.
Ich hoffe, das hilft Dir etwas weiter
Edit: Die Netzmaskenangabe, z.B. /24 wird
nicht umgewandelt. Die Zahl gibt ja nur an, wie viele Bits der Adresse der Netzadresse angehören. Das heißt, für /24 besteht die Netzmaske aus 24x "1" und die restlichen 8 Bit sind "0":
Code:
11111111 11111111 11111111 00000000
Die entsprechende Zahl kannst Du Dir in einer Schleife zusammenbasteln:
Delphi-Quellcode:
// NetzAnteil wäre z.B. 24
// Initialisieren
Maske := 0;
// 32 Bit
FOR Stelle := 1 TO 32 DO
// Im "Netzbereich" der Adresse?
IF Stelle > 32-NetzAnteil THEN
// Maske zusammensetzen
Maske := Maske + (1 SHL Stelle);
Um die Netzadresse zu erhalten, einfach
IP-Adresse und Netzmaske AND-verknüpfen, d.h. wenn Du
IP und Maske z.B. als Longword vorliegen hast, reicht schon:
Netzadresse := IP AND Maske;
Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...