Ich frage mich, wie man eine menschenlesbare IP Adresse von DhcpInfo.ipAddress bekommt? Das Schwierige daran ist, dass es sich um eine ganze Zahl handelt und man eine IP-Adresse natürlich nicht in einer ganzen Zahl speichern kann. Also, wie ist die IP-Adresse codiert, dass es in einem int gespeichert werden kann? Die Dokumentation bietet keine Hilfe für dieses Problem: Ссылка Danke: -)
Sie können das tatsächlich.
IP-Adresse als int ist: AABBCCDD
und in lesbarer Form ist es AA.BB.CC.DD
, aber in dezimaler Basis. Wie Sie sehen, können Sie sie einfach mit bitweisen Operationen extrahieren oder indem Sie int in ein Byte-Array konvertieren.
Siehe das Bild:
Sie können natürlich keine IP-Adresse in einer Ganzzahl speichern
Eigentlich ist das alles eine IP (v4) -Adresse - eine 32-Bit-Ganzzahl (oder 128-Bit, im Fall von IPv6).
Das "menschenlesbare" Format, von dem Sie sprechen, wird erzeugt, indem die Bits der ganzen Zahl in Gruppen von 8 geteilt werden, die "Oktette" genannt werden und in die Basis 10 umgewandelt werden, z. " 192.168.0.1
".
Die Bits dieser Adresse würden wie folgt aussehen (Leerzeichen zur besseren Lesbarkeit hinzugefügt):
%Vor%Dies entspricht der Dezimalzahl 3,232,235,521.
Wie von anderen Postern erwähnt, ist eine IP-Adresse 4 Bytes, die zu einem int gepackt werden können. Andrey gab eine schöne Illustration, die zeigt, wie. Wenn Sie es in einem InetAddress-Objekt speichern, können Sie ToString () verwenden, um die lesbare Version zu erhalten. Etwas wie:
%Vor%kehren Sie einfach die IP-Adresse um, die Sie in Bytes erhalten
%Vor%