2013-07-05 108 views
11

我想將字符串值(十六進制)轉換爲IP地址。我怎樣才能使用Java?將十六進制字符串轉換爲IP地址

的十六進制值:0A064156

IP:10.6.65.86

site給了我正確的結果,但我不知道如何在我的代碼實現這一點。

它可以直接在XSLT中完成嗎?

+1

1.拆分串入長度。2.轉換的所有子到dezimal的子串。 3.在所有子串之間插入點。 – Sirko

回答

12

試試這個

InetAddress a = InetAddress.getByAddress(DatatypeConverter.parseHexBinary("0A064156")); 

DatatypeConverter是從標準javax.xml.bind

+1

+1。我非常喜歡這個答案。沒有太多的代碼或字符串操作,並給你你想要的。 – ARC

+0

非常感謝!甜而精確。 – Rg90

4

您可以將您的十六進制值分成2組,然後將它們轉換爲整數。

0A = 10

06 = 06

65 = 41

86 = 56

代碼:

String hexValue = "0A064156"; 
String ip = ""; 

for(int i = 0; i < hexValue.length(); i = i + 2) { 
    ip = ip + Integer.valueOf(hexValue.subString(i, i+2), 16) + "."; 
} 

System.out.println("Ip = " + ip); 

輸出:

IP = 10.6.65.86。

+1

加上投票,你的答案實際上是教如何捕魚 – HRgiger

0
public String convertHexToString(String hex){ 

    StringBuilder sb = new StringBuilder(); 
    StringBuilder temp = new StringBuilder(); 

    for(int i=0; i<hex.length()-1; i+=2){ 


     String output = hex.substring(i, (i + 2)); 

     int decimal = Integer.parseInt(output, 16); 

     sb.append((char)decimal); 

     temp.append(decimal); 
      temp.append("."); 
    } 
    System.out.println("Decimal : " + temp.toString()); 

    return sb.toString(); 

}

0

您可以使用下面的方法:

public static String convertHexToIP(String hex) 
{ 
    String ip= ""; 

    for (int j = 0; j < hex.length(); j+=2) { 
     String sub = hex.substring(j, j+2); 
     int num = Integer.parseInt(sub, 16); 
     ip += num+"."; 
    } 

    ip = ip.substring(0, ip.length()-1); 
    return ip; 
} 
相關問題