Lange Bitfolge speichern

javampir

Bekanntes Mitglied
Hallo,
ich habe folgendes Problem: Ich möchte in Java ein Protokoll nachstellen (Echtzeit), welches Datenwerte allerdings in 11-Bit Worten verwaltet... Ich habe ein Array von bytes (also jeweils 8 Bits), wo zwischen die werte immer einzelne Bits geschoben werden sollen. Ich brauch das ganze am Ende als (natürlich größeres) byte-Array. Ich habs mit Stringoperationen probiert; da hat ein Durchlauf 20 sek. gebraucht... zu lang. Wie soll ich da ran gehen? ArrayList von Booleans ? Bitfields? Ich bin für jede Hilfe dankbar.
javampir
 
Noch mal langsam. Du willst 11 Bits als ein "Byte" verwalten. Dazu hast du ein Byte Array gemacht und zwischen die Werte im Byte Array werden Bits geschoben. Deine Methode ist aber zu langsam.
Versuch mal die Bytes in den nächstgrößeren Datentyp zu schreiben. Vielleicht ist das Zwischenschieben von Bits dann schneller, weil die Bits noch mit in diese Variable geschrieben werden.
 
Hallo,
vielen Dank für deine Antwort. Ich habe eine Übergangslösung gemacht, die ist aber nicht so schön: ich habe immer abwechselnd ein Daten-Byte und ein Informationsbyte (das die 11 vervollständigt) genommen. dadurch ist die datenmenge einigermaßen groß. Bei deiner Variante wäre auch das Problem, dass ich nicht 8Bit Data + 3 Bit Info habe, sondern 1 + 8 + 2. Die Datenmenge muss aber möglichst klein werden. Hat noch jemand eine Idee?
javampir
 
Es ist leider unmöglich einen Datentyp zu definieren, der 11 Bit hat. Du müssstest das über 16 machen, wenn es in eine Variable rein soll. Selbst boolean Arrays sind so viele Byte groß, wie Einträge drin stehen.
Ich meinte, dass du deine 11 Bit in einen char schreibst und fünd Bit frei lässt.

Eine weitere Möglichkeit wäre einen Datentyp zu nehmen, dessen Bitzahl sich durch acht und (fast) durch drei Teilen lässt. Zum Beispeil long oder double. Dann hast du zwei Variablen. Eiine, in der die Infos stehen und eine in der die Bytes stehen. Dann iterierst du mit zwei "Zeigern" darüber.
 

Neue Themen


Zurück
Oben