From 301f5ffde09f2eb0f5481dbea77c1a0eee4321e4 Mon Sep 17 00:00:00 2001 From: Pascal Quantin Date: Thu, 7 May 2015 22:39:34 +0200 Subject: ftypes: display 64 bits BASE_HEX fields as hexadecimal Change-Id: Ie9bedf6c17c0a941ebaabd5144460a42eb4ca1ed Reviewed-on: https://code.wireshark.org/review/8336 Reviewed-by: Pascal Quantin --- epan/ftypes/ftype-integer.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'epan/ftypes') 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 -- cgit v1.2.1