diff --git a/scapy/fields.py b/scapy/fields.py
index 0843adc42c616e55dd31bed416858de6b47efa6e..86ccf7816641100bfbc5e4460536f80ea4fb21ff 100644
--- a/scapy/fields.py
+++ b/scapy/fields.py
@@ -1053,7 +1053,7 @@ class FlagValue(object):
                 r.append(self.names[i])
             i += 1
             x >>= 1
-        return ("+" if self.multi else "").join(r)
+        return ("+" if self.multi else "").join(r) if r else int(self)
     def __repr__(self):
         return "<Flag %d (%s)>" % (self, self.flagrepr())
     def __deepcopy__(self, memo):
diff --git a/scapy/packet.py b/scapy/packet.py
index 2ac07d15c05825b1b11481bb516c4062a214e216..cfd760b53545e270bcab8888669309b37b16881a 100644
--- a/scapy/packet.py
+++ b/scapy/packet.py
@@ -1196,6 +1196,8 @@ A side effect is that, to obtain "{" and "}" characters, you must use
                 fv = fv.command()
             elif fld.islist and fld.holds_packets and type(fv) is list:
                 fv = "[%s]" % ",".join( map(Packet.command, fv))
+            elif isinstance(fld, FlagsField):
+                fv = int(fv)
             else:
                 fv = repr(fv)
             f.append("%s=%s" % (fn, fv))