2013-07-05 17 views
11

Chcę przekonwertować wartość ciągu (w systemie szesnastkowym) na adres IP. Jak mogę to zrobić za pomocą Java?Konwertuj łańcuch szesnastkowy na adres IP

Wartość Hex: 0A064156

IP: 10.6.65.86

Ten site daje mi poprawny wynik, ale nie jestem pewien, jak zaimplementować to w moim kodu.

Czy można to zrobić bezpośrednio w XSLT?

+1

1. podzielić ciąg na podciągi o długości 2. 2. Konwersja wszystkich podciągi do dezimal. 3. Wstaw kropki między wszystkimi podciągami. – Sirko

Odpowiedz

12

spróbować

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

DatatypeConverter wynosi średnia javax.xml.bind pakiet

+1

+1. Naprawdę podoba mi się ta odpowiedź. Nie za dużo manipulowania kodami lub ciągami i daje dokładnie to, czego chcesz. – ARC

+0

Wielkie dzięki! Słodki i precyzyjny. – Rg90

4

Możesz podzielić swoją wartość szesnastkową w grupach po 2, a następnie przekonwertować je na liczby całkowite.

0A = 10

06 = 06

65 = 41

86 = 56

Kod:

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); 

wyjściowa:

Ip = 10.6.65.86.

+1

oraz głosowałem, Twoja odpowiedź faktycznie uczy, jak złapać ryby – 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

można wykorzystywać następujące metody:

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; 
} 
Powiązane problemy