Hallo,
ich habe folgenden Code:
Ich verstehe die Zeile
nicht.
Ich habe gesehen, dass man alternativ folgenden Code verwenden könnte:
Kann mir jemand erklären, was das Addieren von 256 generell soll und wie die (elegantere) Variante mit dem &0xff funktioniert?
Danke im Voraus.
PETER
ich habe folgenden Code:
Code:
import java.io.*;
import java.net.*;
class DNSAnfrage {
public static void main(String[] args) {
PrintWriter out = new PrintWriter(System.out, true);
if (args.length != 1)
out.println("java DNSAnfrage <hostname>");
else
try {
InetAddress ip = InetAddress.getByName(args[0]);
out.println("Daten fuer '" + args[0] + "':");
out.println(" toString: " + ip);
out.println(" getHostName: " + ip.getHostName());
out.println(" getHostAddress: " + ip.getHostAddress());
byte[] b = ip.getAddress();
out.print(" getAddress: ");
for (int i = 0; i < b.length; ++i)
out.print(" " + (b[i] & 0xFF)); // keine negativen Werte ausgeben
out.println("\n\nAlle Adressen fuer '" + args[0] + "':");
InetAddress[] ips = InetAddress.getAllByName(args[0]);
for (int i = 0; i < ips.length; ++i)
out.println(" Die " + (i + 1) + ". IP-Adresse von " + args[0] + " ist: "
+ ips[i].getHostAddress());
} catch (UnknownHostException x) {
// Thrown to indicate that the IP address of a host could not be determined.
x.printStackTrace();
}
}
}
Ich verstehe die Zeile
Code:
for (int i = 0; i < b.length; ++i)out.print(" " + (b[i] & 0xFF)); // keine negativen Werte ausgeben
Ich habe gesehen, dass man alternativ folgenden Code verwenden könnte:
Code:
for (int i = 0; i < b.length; ++i)
int unsignedByte=b[i];
if (unsignedByte<0) unsignedByte=b[i]+256;
Kann mir jemand erklären, was das Addieren von 256 generell soll und wie die (elegantere) Variante mit dem &0xff funktioniert?
Danke im Voraus.
PETER