master
L 2025-04-30 00:10:31 +02:00
parent 8ad1feabdf
commit 935d31e39f
1 changed files with 118 additions and 21 deletions

103
Main.java
View File

@ -1,8 +1,11 @@
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<Character, Integer> zahlen = Zählen.countEachLetter(text);
@ -24,7 +27,19 @@ public class Main
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)
@ -107,7 +122,6 @@ public class Main
}
for(int i =0;i<code.length();i++)
{
if(code.charAt(i) == '1')
@ -128,14 +142,97 @@ public class Main
return decoded;
}
public static Byte ByteString_to_Byte (String byteString)
{
if(byteString.length() != 8)
{
System.out.println(">8");
return null;
}
byte result = 0;
for(byte i=0 ;i<8;i++)
{
if(byteString.charAt(7-i) == '1')result|=1<<i; //verschiebt die 1 um i binärpositionen nach links
else if(byteString.charAt(7-i) != '0')
{
System.out.println("was flasch");
return null;
}
}
System.out.print(result+ " ");
return result;
}
public static String Byte_to_ByteString (byte b)
{
String result = "";
for(byte i=0;i<8;i++)
{
boolean bit= ((b>>(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<b.length;i++)
{
result += Byte_to_ByteString(b[i]);
}
return result;
}
public static Character byteString_to_character (String byteString)
{
byte a = ByteString_to_Byte(byteString.substring(0,8));
byte b = ByteString_to_Byte(byteString.substring(8,16));
byte[] array = new byte[] {a,b};
if(array[0] == nullCharBytes[0] && array[1] == nullCharBytes[1])return null;
var byteBuffer = ByteBuffer.wrap(array);
return byteBuffer.getChar(0);
}
public static String baum_to_byteString (Node baum)
{
if(baum == null)return "";
System.out.println(baum.getBuchstabe());
String byteString = character_to_byteString(baum.getBuchstabe());
byteString += baum_to_byteString(baum.getLeft());
byteString += baum_to_byteString(baum.getRight());
return byteString;
}
public static Node byteString_to_baum (String s)
{
String test = "";
for(int i=0;i<s.length();i+=16)
{
String characterString = s.substring(i,i+16);
Character c = byteString_to_character(characterString);
test += c+" ";
}
System.out.println();
System.out.println(test);
return null;
}
}