summaryrefslogtreecommitdiff
path: root/epan/ftypes
diff options
context:
space:
mode:
Diffstat (limited to 'epan/ftypes')
-rw-r--r--epan/ftypes/ftype-integer.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/epan/ftypes/ftype-integer.c b/epan/ftypes/ftype-integer.c
index f74759b053..d77cb1ec25 100644
--- a/epan/ftypes/ftype-integer.c
+++ b/epan/ftypes/ftype-integer.c
@@ -582,13 +582,25 @@ integer64_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char
static int
uinteger64_repr_len(fvalue_t *fv _U_, ftrepr_t rtype _U_, int field_display _U_)
{
- return 20; /* enough for 2^64-1, in decimal */
+ return 20; /* enough for 2^64-1, in decimal or 0xXXXXXXXXXXXXXXXX */
}
static void
uinteger64_to_repr(fvalue_t *fv, ftrepr_t rtype _U_, int field_display _U_, char *buf)
{
- guint64_to_str_buf(fv->value.uinteger64, buf, 21);
+ if (field_display == BASE_HEX)
+ {
+ /* This format perfectly fits into 19 bytes. */
+ *buf++ = '0';
+ *buf++ = 'x';
+
+ buf = qword_to_hex(buf, fv->value.uinteger64);
+ *buf++ = '\0';
+ }
+ else
+ {
+ guint64_to_str_buf(fv->value.uinteger64, buf, 21);
+ }
}
static gboolean