master
parent
935d31e39f
commit
a1c9d3bdda
106
Main.java
106
Main.java
|
@ -1,6 +1,7 @@
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.Stack;
|
||||||
|
|
||||||
public class Main
|
public class Main
|
||||||
{
|
{
|
||||||
|
@ -35,13 +36,36 @@ public class Main
|
||||||
System.out.println(byteString_to_character(character_to_byteString('f')));
|
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('g')));
|
||||||
System.out.println(byteString_to_character(character_to_byteString('h')));
|
System.out.println(byteString_to_character(character_to_byteString('h')));
|
||||||
|
|
||||||
|
|
||||||
byteString_to_baum(baum_to_byteString(wurzel));
|
|
||||||
|
|
||||||
|
byteString_to_baum(baum_to_byteString(wurzel));
|
||||||
printBaum(wurzel);
|
printBaum(wurzel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void test2()
|
||||||
|
{
|
||||||
|
Map<Character, Integer> zahlen = Zählen.countEachLetter("aaaabbc");
|
||||||
|
Node wurzel = Node.erstellen(zahlen);
|
||||||
|
printBaum(wurzel);
|
||||||
|
//byteString_to_baum(baum_to_byteString(wurzel));
|
||||||
|
HashMap<Character, String> codes = new HashMap<Character, String>();
|
||||||
|
|
||||||
|
if(wurzel.getLeft() == null && wurzel.getRight() == null)
|
||||||
|
{
|
||||||
|
codes.put(wurzel.getBuchstabe(), "0");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
generieren(codes,wurzel,"");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var entry : codes.entrySet())
|
||||||
|
{
|
||||||
|
System.out.println("->" + entry.getKey() + ", Code: " + entry.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
printBaum(byteString_to_baum(baum_to_byteString(wurzel)));
|
||||||
|
}
|
||||||
|
|
||||||
public static void printBaum(Node baum)
|
public static void printBaum(Node baum)
|
||||||
{
|
{
|
||||||
if(baum == null)return;
|
if(baum == null)return;
|
||||||
|
@ -73,9 +97,11 @@ public class Main
|
||||||
public static void generieren(HashMap<Character, String> codes, Node node, String code)
|
public static void generieren(HashMap<Character, String> codes, Node node, String code)
|
||||||
{
|
{
|
||||||
if(node == null)return;
|
if(node == null)return;
|
||||||
|
System.out.println(node.getBuchstabe() +" " + code);
|
||||||
if(node.getLeft() == null && node.getRight() == null)
|
if(node.getLeft() == null && node.getRight() == null)
|
||||||
{
|
{
|
||||||
codes.put(node.getBuchstabe(), code);
|
codes.put(node.getBuchstabe(), code);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
generieren(codes, node.getLeft(), code + "0");
|
generieren(codes, node.getLeft(), code + "0");
|
||||||
|
@ -160,7 +186,7 @@ public class Main
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
System.out.print(result+ " ");
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,28 +237,82 @@ public class Main
|
||||||
public static String baum_to_byteString (Node baum)
|
public static String baum_to_byteString (Node baum)
|
||||||
{
|
{
|
||||||
if(baum == null)return "";
|
if(baum == null)return "";
|
||||||
System.out.println(baum.getBuchstabe());
|
|
||||||
|
|
||||||
String byteString = character_to_byteString(baum.getBuchstabe());
|
String byteString = character_to_byteString(baum.getBuchstabe());
|
||||||
byteString += baum_to_byteString(baum.getLeft());
|
byteString += baum_to_byteString(baum.getLeft());
|
||||||
byteString += baum_to_byteString(baum.getRight());
|
byteString += baum_to_byteString(baum.getRight());
|
||||||
return byteString;
|
return byteString;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Node byteString_to_baum (String s)
|
public static Node byteString_to_baum (String s)
|
||||||
{
|
{
|
||||||
String test = "";
|
Node root = null;
|
||||||
|
Stack<Node> äste = new Stack<Node>();
|
||||||
for(int i=0;i<s.length();i+=16)
|
for(int i=0;i<s.length();i+=16)
|
||||||
{
|
{
|
||||||
String characterString = s.substring(i,i+16);
|
String characterString = s.substring(i,i+16);
|
||||||
Character c = byteString_to_character(characterString);
|
Character c = byteString_to_character(characterString);
|
||||||
test += c+" ";
|
Node node = new Node();
|
||||||
|
node.setBuchstabe(c);
|
||||||
|
if(i == 0)root = node;
|
||||||
|
|
||||||
|
if(äste.isEmpty() == false)
|
||||||
|
{
|
||||||
|
Node elternAst = äste.peek();
|
||||||
|
|
||||||
|
elternAst.add(node);
|
||||||
|
if(elternAst.hatPlatzKinder() == false)
|
||||||
|
{
|
||||||
|
äste.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(c == null)
|
||||||
|
{
|
||||||
|
|
||||||
|
äste.push(node);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
System.out.println();
|
|
||||||
System.out.println(test);
|
|
||||||
|
|
||||||
return null;
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Integer byteString_to_int(String byteString)
|
||||||
|
{
|
||||||
|
if(byteString.length() != 32)
|
||||||
|
{
|
||||||
|
System.out.println(">32");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int result = 0;
|
||||||
|
for(int i=0 ;i<32;i++)
|
||||||
|
{
|
||||||
|
if(byteString.charAt(31-i) == '1')result|=1<<i; //verschiebt die 1 um i binärpositionen nach links
|
||||||
|
else if(byteString.charAt(31-i) != '0')
|
||||||
|
{
|
||||||
|
System.out.println("was flasch");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String Int_to_ByteString (int a)
|
||||||
|
{
|
||||||
|
String result = "";
|
||||||
|
|
||||||
|
for(int i=0;i<32;i++)
|
||||||
|
{
|
||||||
|
boolean bit= ((a>>(31-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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue