![]() |
Aus Int64 die Oktette einer IP Adresse berechnen
Moin Moin,
Ich benutze die Funktion MakeIpAddress aus der commctr.pas um den "Wert" einer IP Adresse (String) zu ermitteln.
Delphi-Quellcode:
Die Funktion liefert folgende Ergebnisse
function GetIpValue(IPS:String):int64;
var sl:TStringList; begin sl:=TStringList.create; try // Oktette der IP Adresse splitten sl.Delimiter:='.'; sl.DelimitedText:=IPS; if sl.count=4 then begin // 4 Oktette > IP String könnte gültig sein try result:=MakeIpAddress(strToInt(sl[0]),strToInt(sl[1]),strToInt(sl[2]),strToInt(sl[3])); except // ungültiger IP String (IPS) > Result auf Broadcastadresse setzen result:=4294967296; // 255.255.255.255 end; end else begin // ungültiger IP String (IPS) > Result auf Broadcastadresse setzen result:=4294967296; // 255.255.255.255 end; finally sl.free; end; end; 167772161 // 10.0.0.1 167772162 // 10.0.0.2 3232235777 // 192.168.1.1 3232235778 // 192.168.1.2 Die Ergebnisse entsprechen dem Deizmalwert der IP Adresse.
Code:
Rechenbeispiel 192.168.1.1:
---Oktett 4 - Wert Dezimal 1 ------------------------ 2^0 * 1 = 1 2^1 * 0 2^2 * 0 2^3 * 0 2^4 * 0 2^5 * 0 2^6 * 0 2^7 * 0 ---Oktett 3 - Wert Dezimal 1 ------------------------ 2^8 * 1 = 256 2^9 * 0 2^10 * 0 2^11 * 0 2^12 * 0 2^13 * 0 2^14 * 0 2^15 * 0 ---Oktett 2 - Wert Dezimal 168 ------------------------ 2^16 * 0 2^17 * 0 2^18 * 0 2^19 * 1 = 524288 2^20 * 0 2^21 * 1 = 2097152 2^22 * 0 2^23 * 1 = 8388608 ---Oktett 1 - Wert Dezimal 192 ------------------------ 2^24 * 0 2^25 * 0 2^26 * 0 2^27 * 0 2^28 * 0 2^29 * 0 2^30 * 1 = 1073741824 2^31 * 1 = 2147483648 ============================================================= = 3232235777 // 192.168.1.1 Ich scheitere jetzt den Weg zurück (vom int64 zum String).
Delphi-Quellcode:
function GetAddressString(value:int64):String;
var okt1,okt2,okt3, okt4: integer; begin // Das 4. Oktett kann ich noch selber. :mrgreen: okt4 := Value mod 256; okt3 := :coder2: okt2 := :coder2: okt1 := :coder2: result:=inttostr(okt1)+'.'+inttostr(okt2)+'.'+inttostr(okt3)+'.'+inttostr(okt4); end; Kann mir bei den Oktetten 1 bis 3 jemand helfen ? |
Re: Aus Int64 die Oktette einer IP Adresse berechnen
Hallo,
so geht's:
Delphi-Quellcode:
Gruß
okt4 := Value and $FF;
okt3 := (Value shr 8) and $FF; okt2 := (Value shr 16) and $FF; okt1 := (Value shr 24) and $FF; xaromz |
Re: Aus Int64 die Oktette einer IP Adresse berechnen
|
Re: Aus Int64 die Oktette einer IP Adresse berechnen
Danke euch Beiden.
@xaromz ... funktioniert @Hawkeye ... sehr interessanter Link. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz