-1

我编写了一个将两个字符串与位进行比较的程序,例如

IP 地址 Oct1 => 11000000

子网掩码 Oc1 => 01000000

但是第 4 个八位字节的比较不能正常工作。 http://pastie.org/private/xfccedpcrcksa5so6rykmg

该函数称为 compareBits():

public static String compareBits(String oct, String oct2) {
    String comparison = "";
    for(int i=0; i<=oct.length()-1; i++) {
        if(oct.charAt(i) == oct2.charAt(i) && oct.charAt(i) != 0) {
            comparison = comparison+"1";
        } else {
            comparison = comparison+"0";
        }
    }

    return comparison;
}

在第 4 个八位字节显示反转的结果。(00000001,但应该是 10000000)

你能帮我找出到目前为止我写的附加代码的问题在哪里吗?

4

1 回答 1

3

这是我对您的方法 compareBits 的看法:

public static String compareBits(String oct, String oct2) {
    String comparison = "";
    for(int i=0; i<=oct.length()-1; i++) {
        if(oct.charAt(i) == oct2.charAt(i) && oct.charAt(i) != '0') {
            comparison = comparison+"1";
        } else {
            comparison = comparison+"0";
        }
    }

    return comparison;
}

由于您正在检查 charAt(),因此您得到了一个字符,但您与 0 进行比较,而不是与 char 文字“0”进行比较。这应该够了吧。

另一方面,我认为这个任务可以用更少的代码来完成,例如:

long ipL = IpConverter.ipToLong(ip);
long maskL = IpConverter.ipToLong(mask);
System.out.println(IpConverter.longToIp(ipL & maskL));

问候

于 2013-10-14T14:30:03.130 回答