diff --git a/src/devices/flex.c b/src/devices/flex.c
index 2ed0aa76..b51ddcf3 100644
--- a/src/devices/flex.c
+++ b/src/devices/flex.c
@@ -71,6 +71,7 @@ struct flex_get {
     unsigned long mask;
     const char *name;
     struct flex_map map[GETTER_MAP_SLOTS];
+    const char *format;
 };
 
 #define GETTER_SLOTS 8
@@ -126,9 +127,15 @@ static void render_getters(data_t *data, uint8_t *bits, struct flex_params *para
             }
         }
         if (!getter->map[m].val) {
-            data_append(data,
+            if (getter->format) {
+                data_append(data,
+                    getter->name, "", DATA_FORMAT, getter->format, DATA_INT, val,
+                    NULL);
+            } else {
+                data_append(data,
                     getter->name, "", DATA_INT, val,
                     NULL);
+            }
         }
     }
 }
@@ -474,6 +481,11 @@ static void parse_getter(const char *arg, struct flex_get *getter)
             getter->bit_count = parse_bits(arg, bitrow);
             getter->mask = extract_number(bitrow, 0, getter->bit_count);
         }
+        else if (*arg == '%') {
+            getter->format = strdup(arg);
+            if (!getter->format)
+                FATAL_STRDUP("parse_getter()");
+        }
         else {
             getter->name = strdup(arg);
             if (!getter->name)