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



## The_S (4. Nov 2005)

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 (4. Nov 2005)

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 (4. Nov 2005)

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


----------



## Sky (4. Nov 2005)

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 (4. Nov 2005)

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 (4. Nov 2005)

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 (4. Nov 2005)

```
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 (4. Nov 2005)

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


----------



## Bleiglanz (4. Nov 2005)

ich vermute: wenn das erste Zeichen KEIN ASCII Zeichen ist, dann wird die Zahl negativ


----------



## The_S (4. Nov 2005)

Gut, dass dürfte bei mir nicht vorkommen. Nochmal danke.


----------



## The_S (4. Nov 2005)

gibts auch eine Möglichkeit


```
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 .

[edit] Hat sich erledigt: 


```
BigInteger bi = new BigInteger(wert);
System.out.println(bi.toString(2));
```


----------

