最近研究微软的算法试题,有一道题目是IP防火墙匹配相关的,计算的时候需要将IP地址转换成32位的二进制。这里给出一个自己写的方法。
Java
public String ip2BinStr(String ip) {
String[] arr = ip.split("\.");
String rs = "";
for (String str : arr) {
String s = Integer.toBinaryString(Integer.parseInt(str));
if (s.length() < 8) {
int diff = 8-s.length();
for (int i = 0; i < diff; i++) {
s = "0" + s;
}
}
rs += s;
}
return rs;
}
这里int转化为二进制String的时候无法指定长度,导致还要进行前面补0的操作。写的过程中将Java中内置类型的toBinaryString()方法学习了下,这里写个笔记。
直接在源码上添加注释,在Integer类中,有方法如下
```Java```
public static String toBinaryString(int i) {
return toUnsignedString0(i, 1);
}
/**