diff options
Diffstat (limited to 'epan/ftypes')
-rw-r--r-- | epan/ftypes/ftype-integer.c | 16 |
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 |