首页
首页

IP地址和String类型的转换

昨天面试让手写的一个算法。其实我的算法技术是真的不太行。

我的思路:

按照ip地址,先把ip地址转换成二进制的字符串,然后,每8位截取。生成字符。

面试官说int是四个字节,ip地址是点分十进制。然后每个字节储存的是一位数字。(可以理解,当时真的没有想到位运算这一说。),回头再网上找了一下,果然可以。可是我位运算真的不会。

首先字符串转换成ip地址。按照“.”切分字符串,然后把每个字符串,并按照位置左移八位,然后进行或运算,返回字符

1
2
3
4
5
6
7
8
9
public static int str2Ip(String ip){
String[] ipstrs = ip.split(\\.);//按照.分割字符存入数组
int rs = 0;//保存结果
for(int i = 0;i < ipstrs.length; i++){
int intVal = Integer.parseInt(ipstrs[i]) << 8 * i;//对应位数转换成对应的数组
rs = rs | intval;//进行与运算,把每次新加进来的保存在头部。
}
return rs;
}

ip地址转换成字符串,每8位进行一次切割,然后存储。

1
2
3
4
5
6
7
8
9
public static String IptoString(int ipInt){
String[] ipString = new String[4];
for(int i = 0; i < 4; i++){
int pos = i * 8;
int and = ipInt & (255 << pos);
ipString[i] = String.valueOf(and >>> pos);
}
return String.join("." , ipString);
}

昨天又跑了一天,面试机会也越来越少了。真没有办法,上面的也是真的不会。

可能算法真的太长时间没有练了。总感觉很生疏。马虎大意可能也写错了。

面试结果自我感觉不是太好。

支持一下
扫一扫,支持一下,爱你。
  • 微信扫一扫
  • 支付宝扫一扫