2012-07-18 46 views
0

我想寫一個方法,但不知道從哪裏開始將字符串轉換爲十進制格式。在Java中將IP地址轉換爲十進制等效值?

這裏是我想什麼一個例子:

我有以下字符串:

String ipAddress = "192.168.1.10 "

我想將其轉換爲相應的十進制數:

3232235786

非常感謝!

回答

2

怎麼樣(測試&工作):

String ipAddress = "192.168.1.10"; 
    String[] addrArray = addr.split("\\."); 

    long ipDecimal = 0; 

    for (int i = 0; i < addrArray.length; i++) { 

     int power = 3 - i; 
     ipDecimal += ((Integer.parseInt(addrArray[i]) % 256 * Math.pow(256, power))); 
    } 

    System.out.println(ipDecimal); 
+0

我認爲這是因爲你和其他人都從同一個來源獲取代碼,所以人們認爲你們中的一個人將它從另一箇中複製出來,實際上你們都發現它在別的地方 – 2012-07-18 19:11:16

+0

是的,我從其他地方複製過它,但是我製作了肯定它工作B4張貼。 – Reimeus 2012-07-18 19:12:45

+0

@BobSinclar人們可以只看「回答時間」,看到Reimeus是第一個。 – Baz 2012-07-18 19:13:50

0

將其轉換爲二進制然後再轉換爲十進制

,或者嘗試this

+1

實在沒有理由應該已經下來了,投... – jrad 2012-07-18 18:54:15

+0

如果他是有它的麻煩我想我可以寫它的代碼,其不那麼複雜。哦,好吧.. – 2012-07-18 18:55:16

+0

是的,我只是在我的文章中添加了代碼。它只適用於整數,但我非常確定,你必須改變它才能應用到這將是將「int」的每個實例替換爲「long」。 – jrad 2012-07-18 19:08:48

0

轉換每個段的8位二進制數,將所有4個8位二進制數連接成一個32位二進制數,然後將32位二進制數轉換爲十進制數,然後您就可以得到答案。

編輯:這裏是你如何能數字轉換和從二進制:

public static int binaryToDecimal(String bin) { 
    int result = 0; 
    int len = bin.length(); 
    for(int i = 0; i < len; i++) { 
     result += Integer.parseInt(bin.charAt(i) + "") * Math.pow(2, len - i - 1); 
    } 
    return result; 
} 

public static String decimalToBinary(int num) { 
    String result = ""; 
    while(true) { 
     result += num % 2; 
     if(num < 2) 
      break; 
     num = num/2; 
    } 
    result = reverse(result); 
    return result; 
} 

public static String reverse(String str) { 
    String result = ""; 
    for(int i = str.length() - 1; i >= 0; i--) 
     result += str.charAt(i); 
    return result; 
} 
1
public class Main 
{ 
    public static void main(String[] args) 
    { 
     String ip="192.168.1.10"; 
     String[] addrArray = ip.split("\\."); 
     long num = 0; 
     for (int i = 0; i < addrArray.length; i++) 
     { 
      int power = 3 - i; 
      num += ((Integer.parseInt(addrArray[i]) % 256 * Math.pow(256, power))); 
     } 
     System.out.println(num); 
    } 
} 

輸出:

3232235786 
+1

你剛剛從'Reimeus'複製那個答案嗎? – Baz 2012-07-18 18:59:55

+0

這裏提到[這裏](http://nscraps.com/Java/1353-convert-ip-address-integer-number.htm)。我剛剛測試和答覆,因爲它工作正常。 – Lion 2012-07-18 19:00:53

+0

但其他人已經給出了答案。 – Baz 2012-07-18 19:01:39

2

如何:

new BigInteger(InetAddress.getByName("1.1.1.1").getAddress()).intValue() 

如果我沒記錯這應該做的伎倆... obv只使用你的IP而不是1.1.1.1。

+0

非常好,但您需要提供積極的符號參數。 – EJP 2012-07-18 22:56:44

0

爲了使用MaxMindIP2Location的IP2Country-Databases,我使用了以下代碼將IP轉換爲整數。

您可以將此代碼複製粘貼到助手類中以滿足您的需要。

public static int ip2Int(String ip) { 
    int ipInt = 0; 
    String[] tokens = ip.split("\\."); 
    int factor = 256*256*256; 
    for (String t:tokens) { 
     ipInt += new Integer(t).intValue()*factor; 
     factor = factor/256; 
    } 
    return ipInt; 
} 
0

皈依的計算公式:

A.B.C.D = D + (C * 256) + (B * 256 * 256) + (A * 256 * 256 * 256) 
相關問題