Wie soll dieser Code aufgebaut werden?
Ich habe die Aufgabe bekommen, eine IPv4-Addresse in eine 32 Bit-Zahl umzuwandeln, habe aber keine Idee wie ich das machen soll. Kann mir bitte jemand helfen? Danke im Voraus!
3 Antworten
Jede Gruppe der IPv4 ist ein Oktett. Es besteht aus 8 Bits, einem Byte, deshalb auch die möglichen Werte 0 bis 255.
Dieses Oktett kannst du auch als Hexadezimal-Werte darstellen, wie im Beispiel gegeben ist - oder eben die Binärdarstellung aller Oktette direkt hintereinander schreiben, um den Gesamtwert zu erhalten
Am einfachsten wäre hier wohl, das String an den Punkten zu splitten, die Teile in Integer umzuwandeln und als Ziffern einer Zahl im 256er-System aufzufassen. Da man hier den Bereich der 32-Bit-signed-integer verlässt, empfiehlt es sich, long zu verwenden (Java kennt ja nativ keine unsigned integers).
(Wie man eine Zahl aus ihren Ziffern in einem beliebigen Stellenwertsystem berechnet, weißt du?)
Erkennt man am Beispiel doch recht gut:
192.168.0.1 -> 0xc0a80001 -> 3.232.235.521
Es werden einfach die einzelnen Oktetten der IPv4-Adresse in ihre Hexadezimaldarstellung umgewandelt und aneinander gekettet. 192 ist in hexadezimal beispielsweise 0xc0, 168 wiederum 0xa8. Zusammen ergibt das den obigen Hexadezimalwert. Und diese Hexadezimalzahl kann man dann ganz normal in dezimal umwandeln, wodurch man auf den angegebenen Wert kommt.