String in Binär => was ist schöner/besser?

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Hi, mal eine allgemeine Frage.

Ich hab nen String, meinetwegen "blub". Diesen möchte ich jetzt Binär darstellen. Mir kommen da zwei Möglichkeiten:

1. Ascii ausrechnen (also 098108117098 bzw. 9810811798) und diese Zahl dann komplett Binär umrechnen (also 1011011010111101100110001000001101010 bzw. 1001001000110001010001101110010110). Wobei ich hier das Problem habe, wenn ich mit 0 auffülle, wird die führende 0 (wenn denn eine vorhanden ist) logischerweiße abgeschnitten, was dann wieder zur folge hat, dass ich ihn nicht (oder nur schwer) wieder zurückwandeln kann.

2. Ascii umrechnen und anschließend jedes Zeichen einzeln binär darstellen (bei 9810811798 wären das dann 01100010(98)01101100(108)01110101(117)01100010(98).

Was haltet ihr für sinnvoller/gebräuchlicher? Oder gibts da noch eine ganz andere Lösung die alles in den Schatten stellt ;)?

[edit] bei 2. natürlich ohne die Zahlen in den Klammern :wink:
 

Sky

Top Contributor
Kannst Du mal sagen, wofür das gedacht ist ? Mir erschließt sich der Sinn nicht ganz; deshalb fällt es mir schwer eine Lösung vorzuschlagen.
 

The_S

Top Contributor
Ich soll für jemanden nen kleines Prog schreiben, dass text in binär und umgekehrt umrechnet.
 

Sky

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
Ich soll für jemanden nen kleines Prog schreiben, dass text in binär und umgekehrt umrechnet.
gut, dann ist es doch so trivial, wie's im ersten Post steht ;-)

Mach doch
1. String#toCharArray und
2. Integer#toBinaryString( ) für alle char's
 

Mag1c

Top Contributor
Moin,

ich würde das zeichenweise machen, sonst bekommst du schnell ein Überlaufproblem und mußt dich mit BigInteger rumschlagen oder so ;)

Mit den Methoden String#getBytes bzw. String#toCharArray und Integer#toBinaryString sollte das doch schnell erledigt sein.

Gruß
Mag1c
 

The_S

Top Contributor
Danke für die Antwort,

hatte ich ursprünglich eigentlich auch so vor. Aber als ich dann mit Long.toBinaryString angefangen hab rumzuspielen, ist mir aufgefallen, dass diese Methode das nicht macht. Deswegen meine Frage :wink:
 

Bleiglanz

Gesperrter Benutzer
Code:
new BigInteger(str.getBytes("UTF-8")).toString(2)

new String(new BigInteger(binString,2).toByteArray(),"UTF-8")
Nachteil: uU ein Minuszeichen am Anfang...
 

The_S

Top Contributor
Und ich trottel schreib mir nen Algo ... :roll: :oops: :autsch: . Kann man die umstände, in denen ein Minus vorneweg gestellt ist genauer spezifizieren? Aber auf jedenfall schonmal Thx.
 

The_S

Top Contributor
gibts auch eine Möglichkeit

Code:
Long.toBinaryString(Long.parseLong(test));
Long.toString(Long.parseLong(test ,2));

(also meine 1. Methode)

gleich in einen BigInteger zu schreiben? Long ist zu klein :oops:.

[edit] Hat sich erledigt:

Code:
BigInteger bi = new BigInteger(wert);
System.out.println(bi.toString(2));
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben