Binär in Byte speichern

grashupfa

Mitglied
Hallo!

Ich würde gerne eine beliebige Binärzahl mittels eines byte array darstellen.
Wenn ich also die binäre Zahl "0101" habe, möchte ich sie durch byte[0] = 0, byte[1] = 1, byte[2] = 0, byte[3] = 1 .... darstellen.
Soweit funktioniert das ja auch wunderbar, mein Problem ist, dass ich diese Zahl jetzt in einem BigInteger zurückgeben muss. Der BigInteger bietet zwar einen Konstruktor, dem man ein byte array übergeben kann, jedoch wird mein array falsch interpretiert.
Aus:

byte[0] = 0 .... wird 00000000
byte[1] = 1 .... wird 10000000 und nicht: 00000001
usw...

dadurch wird natürlich der Wert der Zahl verfälscht und der BigInteger ist unbrauchbar...

Wie kann ich diesen Fehler nun beheben? Ich komme einfach nicht drauf, hab schon gesucht und ewig probiert, es kann ja nicht so schwer sein 🙂

danke im Vorraus,
lg
 
Byte Array spiegeln. Allerdings habe ich meine Zweifel daran, dass BigInt deinen Bytearray als array of Bits versteht.
 
Zuletzt bearbeitet:
Verwende entweder ein BitSet oder setze einzelne Bits über Bitoperationen in einem int/long. Deine byte[]-Idee ist jedenfalls nicht möglich (da ein solches Array, wie gesagt, Bytes und keine Bits enthält).
 
Wenn ich also die binäre Zahl "0101" habe, möchte ich sie durch byte[0] = 0, byte[1] = 1, byte[2] = 0, byte[3] = 1 .... darstellen.

Falsch, die binärzahl 0101 müsstet du so erzeugen :

Java:
byte[] a = {00000101}

deine Schreibweise erzeugt (wenn ich mich nicht ganz irre)

Java:
byte[] a = {00000000, 00000001,00000000,00000001}

Also die "binärzahl" 10000000000000001.
Da ein "Byte" halt keine bit speichert, sondern immer 8bit (8bit = 1byte).
 
Auch das ist nicht korrekt. Zahlen mit mindestens einer führenden Null und ohne folgendes x werden als Oktalzahlen interpretiert, weswegen 00000101 gleichbedeutend ist mit 0101, was 65 ist.
Binärzahlen lassen sich, soweit mein Kenntnisstand, in Java nicht als Literal schreiben. Stattdessen muss man halt den entsprechenden Wert als Dezimal-/Oktal/-Hexadezimalzahl angeben. Alternativ könnte man einen String mit der binären Darstellung als Inhalt in ein int/long parsen, wenn man unbedingt die binäre Schreibweise im Code sehen möchte. Oder halt über Bitoperationen die Bits eines ints/long einzeln auf die entsprechenden Werte setzen. Oder ein BitSet verwenden.
 

Zurück
Oben