7 Stimmen

Übersetzen eines Strings mit einem Binärwert in Hex

Ich versuche, eine Zeichenkette, die einen Binärwert (z. B. 000010001010011) enthält, in ihren Hex-Wert zu übersetzen.(453)

Ich habe verschiedene Optionen ausprobiert, aber meistens erhalte ich einen umgewandelten Wert für jedes einzelne Zeichen. (0=30 1=31)

Ich habe eine Funktion, die meine Eingabe auf nicht-mathematische Weise in Binärcode umwandelt, sondern durch eine Reihe von "if, else if"-Anweisungen. (Die Werte werden nicht berechnet, weil sie nicht standardisiert sind.) Der Binärcode ist in einer Variablen String "binOutput" enthalten.

Ich habe derzeit so etwas wie das hier:

        String bin = Integer.toHexString(Integer.parseInt(binOutput));

Aber das funktioniert überhaupt nicht.

0 Stimmen

Wow, ihr Jungs seid schnell! Und es funktioniert! Danke! Aber ich habe noch 1 Problem... wenn die Zahlen größer sind, scheint es nicht zu funktionieren.(z.B. "1011000010001010011101010110110011001000010011111" sollte 16114EAD9909F werden)

0 Stimmen

Das Problem ist, dass der Wert nicht in eine int . Versuchen Sie String bin = Long.toHexString(Long.parseLong(binOutput, 2)); Wenn sie zu groß wird, selbst für eine lange (64 Bit), dann müssen Sie die binOutput in kleinere Stränge aufteilen und jedes Stück einzeln bearbeiten.

16voto

Ted Hopp Punkte 227177

Versuchen Sie es mit Integer.parseInt(binOutput, 2) anstelle von Integer.parseInt(binOutput)

0 Stimmen

Gute Antwort, danke, und was ist, wenn ich möchte, dass "00000001" als "01" ausgegeben wird, nicht nur als "1"?

0 Stimmen

@RRTW - Fragen Sie nach dem umgekehrten Problem: Konvertieren eines Integer-Wertes in eine Zeichenkette? Dies kann auf verschiedene Weise geschehen: Integer.toString() , String.format und ein paar andere. Ihre Anforderung ist nicht klar. Wollen Sie immer eine führende Null? Wollen Sie immer mindestens zwei Ziffern? Oder etwas anderes?

0 Stimmen

Ja, ich möchte immer eine führende Null haben :-), wie Ihr Hinweis, werde ich versuchen, dies mit String.format zu tun, danke~

2voto

jcomeau_ictx Punkte 36287

Ted Hopp ist mir zuvorgekommen, aber ich komme trotzdem:

jcomeau@intrepid:/tmp$ cat test.java; java test 000010001010011
public class test {
 public static void main(String[] args) {
  for (int i = 0; i < args.length; i++) {
   System.out.println("The value of " + args[i] + " is " +
    Integer.toHexString(Integer.parseInt(args[i], 2)));
  }
 }
}
The value of 000010001010011 is 453

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X