我编写了一个程序,将两个字符串与位进行比较,例如
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)
你能帮我找一下我到目前为止所写的附加代码的问题吗?
答案 0 :(得分:3)
以下是我对比较方法的看法:
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进行比较,而不是与字面值“0”进行比较。这应该可以解决问题。
另一方面,我认为可以用更少的代码来完成这项任务,例如:
long ipL = IpConverter.ipToLong(ip);
long maskL = IpConverter.ipToLong(mask);
System.out.println(IpConverter.longToIp(ipL & maskL));
此致