komprimierung mittels Huffman-Algorithmus, bit-shifting.

Status
Nicht offen für weitere Antworten.
Y

YoYo

Gast
Hallo!
Ich muss für die Uni ein Kompriemierungsprogramm mittels Huffman Algorithmus schreiben. Bin auch schon relativ weit. Jetzt bin ich allerdings an einer Stelle wo ich nicht mehr weiss wie ich das umsetzen soll: (ich versuche mal das Problem zu beschreiben ohne den ganzen Huffman Code zu erklären)

Ich habe ine Liste: in dieser stehen jeweils Objekte die einmal den numerischen Byte wert speicher sowie die länge der dafür benötigten bits.

Beispielobjekt 1:
private int wert = 10; // der numerische wert
private int BitLaenge = 4; //weil ja 10 binär dargestellt 1010 ist

Beispielobjekt2:
private int wert = 23; // der numerische wert
private int BitLaenge = 5; //weil ja 23 binär dargestellt 10111 ist


Eigentlich werden die int-werte aber ja mit 32 bit dargestellt das heisst der Wert 10 aus Beispielobjekt1
wäre 00000000000000000000000000001010.
Jetzt will ich mir aber einen Bytestream oder OutputStream mit den Bits füllen ohne die führenden nullen. Also wenn später Objekt 1 und Objekt2 gespeichert werden wird nur 101010111 gespeichert(jeweils die Binärwerte aber ohne die nullen.)
Habe mit dem shiftoperator schon die 1010 bei Objekt 1 ganz an den anfang geschrieben --> 1010000000....
aber jetzt muss ich den nächsten wert ja dann an die 4te stelle schreiben.
Bin ratlos wie man das machen soll?
Hoffe jemand konnte mir folgen?!?!

Danke schon mal!!
 
G

Guest

Gast
glaub das du das willst..? du musst dir die verschiebeposition halt mitspeicher, wenn das ding jetzt in der summe länger als 32 bit wird hast du wieder ein problem... naja, vllt. gibt es da ja eine class schon für sowas..
Code:
		 int wert1 = 10;
		 int BitLaenge1 = 4;
		 int wert2 = 23;
		 int BitLaenge2 = 5;
		 int res= 0 | wert1 << (32-BitLaenge1);
		 // res= 10100000000000000000000000000000
		 // =-2^31+2^29=-1610612736		 	
		 System.out.println(res);
		 res= res | wert2 << (32-BitLaenge1-BitLaenge2);
		 // res= 10101011100000000000000000000000
		 // =-2^31+2^29+2^27+2^25+2^24+2^23=-1417674752
		 System.out.println(res);
 
Y

YoYo

Gast
Danke für die schnelle Hilfe!
Das mit der Oder-Verknüfung war genau was noch fehlte. Das Problem, dass nach 32 Bit Ende ist haben wir jetzt auch gelöst. Man muss das ganze Bitweise machen also immer nur 1 weiter nach links shiften und mitzählen bis 32 dann bis dahin in den Stream schreiben und mit einem neuen int weitermachen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A String Komprimierung die mit PHP kompatibel ist Allgemeine Java-Themen 3
T Huffmann/Komprimierung Allgemeine Java-Themen 9
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
N Lottowebsite programmieren mittels Java, HTML,.... Allgemeine Java-Themen 7
W PDFs signieren mittels IText / Lowagie Allgemeine Java-Themen 0
Zrebna Möglichkeit regelmäßige indentation mittels/innerhalb Stringbuilder Allgemeine Java-Themen 14
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
LimDul Mittels Streams aus Strings A B C den String A, B und C machen Allgemeine Java-Themen 12
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
D HTTP Http-Link mittels GUI schreiben Allgemeine Java-Themen 5
B Java Sternchen ausgeben mittels Rekursion Allgemeine Java-Themen 3
J GUI-Einstellungen mittels Preferences Allgemeine Java-Themen 6
Todesbote JFileChooser im Vordergrund (*.jar wird mittels shell_exec in PHP aufgerufen) Allgemeine Java-Themen 1
E Videosequenz mittels Java aus Video schneiden Allgemeine Java-Themen 10
B Ordner öffnen mittels Java in Linux-Umgebung Allgemeine Java-Themen 7
I Webseite auslesen (welche mittels Javascript Inhalt einbindet) Allgemeine Java-Themen 4
T HTML Tag Position mittels Pattern ermitteln Allgemeine Java-Themen 7
RySa Variablenname mittels Reflexions rausbekommen (als String) ? Allgemeine Java-Themen 9
U Classpath DLLs mittels System.load() laden: Allgemeine Java-Themen 6
T Wie rufe ich mittels String-Inhalts eine Methode auf? Allgemeine Java-Themen 3
T Exif mittels Java auslesen Allgemeine Java-Themen 14
A Sudoku mittels Backtracking Problem Allgemeine Java-Themen 6
7 Webseiten mittels Java auslesen Allgemeine Java-Themen 7
H Zwei verschiedene Dateien mittels einem Binärstream übertragen? Allgemeine Java-Themen 13
dunhillone Mittels Annotations Methoden "erweitern"? Allgemeine Java-Themen 11
S Mittels eines Applets Bilder generieren die in einer Webseite angezeigt werden..? Allgemeine Java-Themen 8
X String zerlegen mittels regulärem Ausdruck Allgemeine Java-Themen 31
O Programm mittels Java installieren Allgemeine Java-Themen 15
S Array-Sort mittels Binärsuche Allgemeine Java-Themen 2
J Setter mittels invoice aufrufen Allgemeine Java-Themen 4
S Eingabeprüfung mittels Regexp Allgemeine Java-Themen 5
J Objekt in Datei speichern mittels Streams Allgemeine Java-Themen 6
D Einfaches Nutzen von Plugins mittels generischer Methode Allgemeine Java-Themen 3
E Aus mehreren PDFs eines machen, zusammenfügen mittels iText Allgemeine Java-Themen 1
G Graph mittels Punkte erstellen Allgemeine Java-Themen 27
M Problem bei PDF-Anzeige mittels Acrobat Viewer Bean Allgemeine Java-Themen 2
G HTML Code aus String mittels REGEX entfernen Allgemeine Java-Themen 2
spacegaier Performanceproblem beim Einlesen aus Datei mittels Threads Allgemeine Java-Themen 23
G Screenshot mittels robot ausführen Allgemeine Java-Themen 4
B Html Formulare mittels Java automatisch senden Allgemeine Java-Themen 5
E import mittels Eclipse Allgemeine Java-Themen 3
F mittels Collection<A> an A.class kommen? Allgemeine Java-Themen 7
T IF Abfrage + YES_NO Option mittels JOptionPane Allgemeine Java-Themen 3
F Zugriff mittels getObject() oder this.object ? Allgemeine Java-Themen 8
J Tonbalance mittels JMF regeln Allgemeine Java-Themen 3
G Font mittels ClassLoader in .jar wirft NotFoundException Allgemeine Java-Themen 10
R Interface mittels Reflection implementieren Allgemeine Java-Themen 8
G eigener logger mittels classe (dynamische logfilename) log4j Allgemeine Java-Themen 15
K Mittels Generics eine Methode verallgemeinern Allgemeine Java-Themen 2
A FTPS bzw. FTP over SSL mittels Java Allgemeine Java-Themen 9
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
Natorion Erkennen ob das Programm mittels Jar-Datei oder class . Allgemeine Java-Themen 9
P E-Mails mittels POP3 abrufen Allgemeine Java-Themen 2
S mail von server mittels mailapi löschen Allgemeine Java-Themen 2
F Huffman Allgemein Allgemeine Java-Themen 1
U Huffman Kodierung Allgemeine Java-Themen 5
I Huffman Codierung Allgemeine Java-Themen 4
J Huffman Codierung Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben