Hex zu Binär

Flipp

Mitglied
Grüße, ich habe eine Frage zum Thema Hex zu binär umwandlung.
Die Methoden dazu sind mir klar.
Java:
String sZahl = "345"

String binaryNumber = Integer.toBinaryString (Integer.parseInt(sZahl, 16));
System.out.println (binaryNumber);
Allerdings brauch ich die Zahl so, dass eine Hexziffer immer vier Stellen ergeben muss. d.h. eine hex 7 soll binär nicht 111 sein, sondern 0111.
Weiß jdn, wie ich verhindern kann, dass die Umwandlung die Anfangsbits bei kleinen Zahlen verschluckt?
 
Also direkt in der Methode gibt es keine Möglichkeit, jedoch könnte man dafür nen Würg-Arround benutzen:

Java:
if(binaryNumber.length() == 1){
    StringBuilder sb = new StringBuilder("000");
    sb.append(binaryNumber);
    String binaryNumberMitNullen = sb.toString();  //Name halt wie gewünscht anpassen ... 
}else if 

/...

Edit: oder man benutzt
Code:
insert(int offset, String str)
Einfach mal bei StringBuilder schauen 😉
 
Zuletzt bearbeitet:
%s bedeutet, ein String soll formatiert ausgegeben werden. Die 4 heißt, er soll vierstellig sein. Defaultmäßig wird er rechtbündig gedruckt.
Zahlen könnte man noch mit führenden Nullen versehen. Strings aber nicht. Deswegen muss man sich mit dem replace() behelfen. format() könnte auch Hex- und Oktalzahlen formatieren, leider aber keine Binärzahlen.
Formatter (Java Platform SE 6)
 
Zuletzt bearbeitet:
Formatter (Java Platform SE 6)

-----
das bodenständige Selber-Zusammenbauen muss auch nicht mit if/else monströs werden, z.B.
Java:
    public static String fillLeftZero(long number, int length)  {
        StringBuilder st = new StringBuilder(Long.valueOf(number).toString());
        while (st.length() < length)  {
            st.insert(0, "0");
        }
        return st.toString();
    }
 
Hallo Woodes, danke für die Antwort. Problem ist nur, dass ich die Hexzahlen erstmal in vier Teile teilen und nachher wieder zusammensetzen muss, da sie ziemlich groß sind, und die Integer.parseInt ()Methode bei Zahlen größer als acht Stellen eine NumberFormatException auswirft. Da wird das schon ein ziemliches Gehacke
Aber als Notlösung wäre es möglich. Gibt es eine Möglichkeit, Zahlen mit mehr als Acht Stellen zu parsen?
 
das bodenständige Selber-Zusammenbauen muss auch nicht mit if/else monströs werden, z.B.
...

Daran hab ich grade gebastelt ^^

@Flipp: Das liegt wohl daran, dass der zu parsende Wert größer als Integer.MAX_VALUE (also 2147483647) ist. Probier mal
Code:
Long.parseLong()
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben