Conversão pra Long

Eu quero tirar os pontinhos do ip e converter este resultado para uma variavel Long oq eu faço???

Me ajudem por favor

[code]
public class Testando
{
public static void main(String args[])
{

	long[] ip_convertido = new long[4];    
	String[] ip_tratado = new String[4];		
	String[] ip_original = new String[4];
	
	ip_original[0] = "172.16.211.207";
	ip_original[1] = "172.16.211.187";
	ip_original[2] = "172.16.211.227";
	ip_original[3] = "127.0.0.1";				
			
		
	//tira os "." do ip e armazena em uma string
	
	for(int i = 0; i <= 3; i++)
	{			
		
			ip_tratado[i] = ip_original[i].replaceAll("\.", "");    //tira os pontos e armazena em ip_tratado
			ip_convertido[i] = Long.ParseLong(ip_tratado[i]);   //**DEVERIA** converter "ip tratado" em LONG
			
	}
	
	
}

}[/code]

“172.16.211.207” tem de ser convertido para o seguinte valor long:

172 * 256 * 256 * 256 + 16 * 256 * 256 + 211 * 256 + 207

ou seja, 2886783951.

(Faça a seguinte experiência - veja se http://72.5.124.161 e http://264600737 não vão para o mesmo lugar (o site da Sun). Infelizmente meu proxy vê o endereço http://264600737 e se embanana todo, achando que tem de acessar uma URL dentro da empresa.

Não tire os pontinhos, hein? Senão você vai ter o problema de não saber se o endereço era “172.16.211.207” ou “172.162.112.07” ou coisa parecida. Use a conversão que lhe indiquei.

import java.net.*;

class ParseIP {
    public static void main(String[] args) {
        String strIP = "72.5.124.161";
        InetAddress addr = null;
        try { addr = InetAddress.getByName (strIP); } catch (UnknownHostException ex) {}
        byte[] ip = addr.getAddress();
        // Queremos pegar o valor acima, que é o byte array {72, 5, 124, 161} e converter
        // em um long
        long longIP = ((ip[0] & 0xFF) << 24) | ((ip[1] & 0xFF) << 16) | ((ip[2] & 0xFF) << 8) | (ip[3] & 0xFF);
        System.out.println (longIP); // deve imprimir "1208319137"
        // Agora queremos fazer o contrário. Dado esse valor, queremos montar novamente a string original.
        byte[] ip2 = new byte[4];
        ip2[0] = (byte) (longIP >> 24);
        ip2[1] = (byte) (longIP >> 16);
        ip2[2] = (byte) (longIP >> 8);
        ip2[3] = (byte) (longIP);
        String s = String.format ("%d.%d.%d.%d", ip2[0] & 0xFF, ip2[1] & 0xFF, ip2[2] & 0xFF, ip2[3] & 0xFF);
        System.out.println (s); // deve imprimir "72.5.124.161"
    }
}

cara desculpe mais eu não entendi

pra não dar esse problema q vc falou eu criei um vetor paralelo que tem nas mesmas posições porem com os ips de forma correta ex:

ip_original[0] = “172.16.211.207”;
ip_convertido[0] = “17216211207”;

eu preciso desse valor pra comparar entre um grupo de maquinas pra saber qual tem o maior IP

Amigo, tirando os pontos, você não sabe o IP se é “17.216.2112.07” ou “172.16.211.207” ou "“172.162.11.207” ou "“172.162.112.07” - todos os IPs são válidos e tirando os pontos dá o mesmo valor, "“17216211207”. É por isso que lhe sugeri a conversão padrão.

Outra forma de comparar 2 IPs sem ter de fazer a conversão padrão é comparar parte por parte; mas nunca tire os pontos, porque são significantes.

Se você quer simplesmente comparar 2 IPs numéricos, você pode tentar algo como o seguinte código:

import java.util.*;

class TesteOrdenacaoIPs {
    public static void main(String[] args) {
        List<String> ips = new ArrayList<String>();
        ips.add ("207.46.19.190");
        ips.add ("72.5.124.61");
        ips.add ("198.182.196.56");
        ips.add ("199.232.41.5");
        Collections.sort (ips, new Comparator<String>() {
            private int[] parseIP (String s) {
                int[] ip = new int[4];
                String[] strIP = s.split ("\.");
                for (int i = 0; i < 4; ++i) {
                    ip [i] = Integer.parseInt (strIP[i]);
                }
                return ip;
            }
            public int compare (String s1, String s2) {
                int[] ip1 = parseIP (s1);
                int[] ip2 = parseIP (s2);
                if (ip1[0] != ip2[0]) return ip1[0] - ip2[0];
                if (ip1[1] != ip2[1]) return ip1[1] - ip2[1];
                if (ip1[2] != ip2[2]) return ip1[2] - ip2[2];
                return ip1[3] - ip2[3];
            }
        });
        System.out.println (ips);
        // deve imprimir:
        // [72.5.124.61, 198.182.196.56, 199.232.41.5, 207.46.19.190]
    }
}