我不知道该怎么做,我的程序应该让用户输入 IP 地址。然后程序应该以十进制表示法返回一个值。例如,输入 134.115.64.1,输出 2255699969。
我想知道我是否可以将 134,115,64 和 1 存储在变量中。如果是这样,我该怎么做?任何类型的教程的链接都会很棒,因为我自己还没有找到。
谢谢
我不知道该怎么做,我的程序应该让用户输入 IP 地址。然后程序应该以十进制表示法返回一个值。例如,输入 134.115.64.1,输出 2255699969。
我想知道我是否可以将 134,115,64 和 1 存储在变量中。如果是这样,我该怎么做?任何类型的教程的链接都会很棒,因为我自己还没有找到。
谢谢
您可以执行以下操作:
String str = "134.115.64.1";
String arr[] = str.split("\\.");
int[] ips = new int[arr.length];
for(int i=0; i<arr.length;i++)
ips[i] = Integer.parseInt(arr[i]);
解析IP地址的技巧
BigInteger ip = new BigInteger(1,InetAddress.getByName("134.115.64.1").getAddress());
// or
long ip = InetAddress.getByName("134.115.64.1").hashCode() & 0xffffffffL;
System.out.println(ip);
印刷
2255699969
我还不能正确理解你的问题......但会尽力做到......
String s = "134.115.64.1";
String[] arr = s.split("\\.");
ArrayList<Long> ar = new ArrayList<Long>();
for(String j : arr){
ar.add(Long.parseLong(j)); // All the Number are Stored in this ArrayList
}
System.out.println(ar);
long longIP(String ip) {
String[] octets = ip.split("\\.");
long ipLong = 0;
for (int i = 0; i < 4; i++) {
ipLong = ipLong * 256 + Long.parseLong(octets[i]);
}
return ipLong;
}
您可以使用正则表达式重写为计算,然后将该计算传递给 JavaScript 引擎。我想使用位移运算符,但它们仅适用于 32 位有符号数字。
String input = "134.115.64.1";
String sum = input.replaceAll("(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)",
"($1 * 16777216) + ($2 * 65536) + ($3 * 256) + $4");
System.out.println(sum);
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
double result = (Double) engine.eval(sum);
System.out.println((long) result);