diff --git a/src/simudator/gui/formatting.py b/src/simudator/gui/formatting.py
index ed57c8f4db9c84547663a82516e3af8da8a5167d..85ce4115f948e8ea90684bd04be954253c34447a 100644
--- a/src/simudator/gui/formatting.py
+++ b/src/simudator/gui/formatting.py
@@ -82,17 +82,17 @@ def format_to_str(format_info: FormatInfo, value: Any) -> str:
     """
     match format_info.selected_format:
         case Format.Int:
-            pass
+            return str(value)
         case Format.Str:
-            pass
+            return str(value)
         case Format.Bin:
             return f"{value:0{format_info.kwargs['bit_length']}b}"
         case Format.Hex:
             return f"{value:0{math.ceil(format_info.kwargs['bit_length']/4)}x}"
         case Format.Decimal:
-            pass
+            return str(value)
         case Format.DecimalSigned:
-            pass
+            return str(value - 2 ** format_info.kwargs['bit_length'])
 
 
 def parse_str(format_info: FormatInfo, value: str) -> Any:
@@ -114,5 +114,13 @@ def parse_str(format_info: FormatInfo, value: str) -> Any:
     match format_info.selected_format:
         case Format.Int:
             return int(value)
+        case Format.Bin:
+            return int(value, base=2)
         case Format.Hex:
             return int(value, base=16)
+        case Format.Decimal:
+            return int(value)
+        case Format.DecimalSigned:
+            # Turn negative numbers into the correct unsigned value
+            # e.g. bit length 3: -1 (0b111 in 2's complement) => 7
+            return int(value) % 2 ** format_info.kwargs['bit_length']