From 935d31e39fa49324bc4e4df162218a6e78746260 Mon Sep 17 00:00:00 2001 From: L <@> Date: Wed, 30 Apr 2025 00:10:31 +0200 Subject: [PATCH] as --- Main.java | 139 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 118 insertions(+), 21 deletions(-) diff --git a/Main.java b/Main.java index 2dda730..22f55f3 100644 --- a/Main.java +++ b/Main.java @@ -1,32 +1,47 @@ import java.util.HashMap; import java.util.*; +import java.nio.ByteBuffer; public class Main { + public static byte[] nullCharBytes = {(byte)0xFF,(byte)0xFF}; + //public static String nullCharBytesString = "1111111111111111"; public static void test(String text) { Map zahlen = Zählen.countEachLetter(text); Node wurzel = Node.erstellen(zahlen); - + System.out.println(); System.out.println("Pre-Order Baum:"); printBaum(wurzel); - + System.out.println(); System.out.println("Anzahl der Zeichen:"); Zählen.printZahl(zahlen); - + System.out.println(); System.out.println("Binärcode der Zeichen:"); codes(text); - + System.out.println(); - + decodierungBaum(codierung(text,wurzel), wurzel); + + System.out.println(byteString_to_character(character_to_byteString(null))); + System.out.println(byteString_to_character(character_to_byteString('b'))); + System.out.println(byteString_to_character(character_to_byteString('c'))); + System.out.println(byteString_to_character(character_to_byteString('d'))); + System.out.println(byteString_to_character(character_to_byteString('e'))); + System.out.println(byteString_to_character(character_to_byteString('f'))); + System.out.println(byteString_to_character(character_to_byteString('g'))); + System.out.println(byteString_to_character(character_to_byteString('h'))); + byteString_to_baum(baum_to_byteString(wurzel)); + + printBaum(wurzel); } - + public static void printBaum(Node baum) { if(baum == null)return; @@ -39,7 +54,7 @@ public class Main { Node wurzel = Node.erstellen(Zählen.countEachLetter(text)); HashMap codes = new HashMap(); - + if(wurzel.getLeft() == null && wurzel.getRight() == null) { codes.put(wurzel.getBuchstabe(), "0"); @@ -48,7 +63,7 @@ public class Main { generieren(codes,wurzel,""); } - + for (var entry : codes.entrySet()) { System.out.println("->" + entry.getKey() + ", Code: " + entry.getValue()); @@ -89,12 +104,12 @@ public class Main System.out.println("Huffman-Codierung: " + code); return code; } - + public static String decodierungBaum(String code,Node baum) { Node current = baum; String decoded = ""; - + boolean hatNurEinBuchstabenart = current.getRight() == null && current.getLeft() == null; if(hatNurEinBuchstabenart) { @@ -104,10 +119,9 @@ public class Main } System.out.println(decoded); return decoded; - + } - - + for(int i =0;i8"); + return null; + } + + byte result = 0; + for(byte i=0 ;i<8;i++) + { + if(byteString.charAt(7-i) == '1')result|=1<>(7-i))&1)==1; + result+= bit?'1': '0'; //falls bit wert 1 hat addiert es 1 zu dem string, wenn nicht dann addiertes es 0 + } + + return result; + } + + public static String character_to_byteString (Character c) + { + + byte[] b = nullCharBytes; + + if(c != null) + { + var byteBuffer = ByteBuffer.allocate(2); + byteBuffer.putChar(c); + b = byteBuffer.array(); + } + + String result = ""; + for(int i=0;i