Andrew.Martin@xxxxxxxxxxxxxxxxxxxxxx wrote:
I have a question I hope you guys can answer.
Basically I've got a field in a packet that is a floating point. My
question is however, to pull this value out I have to use
tvb_get_ntohieee_float, but then I don't know how to display that like
the proto_tree_add_item function does.
Either:
1) use proto_tree_add_float(), if you have a registered field and you
want it formatted exactly like proto_tree_add_item() would have
formatted it had you used proto_tree_add_item() (but note that
value = tvb_get_ntohieee_float(tvb, offset);
proto_tree_add_float(tree, hf, tvb, offset, 4, value);
is almost identical to
proto_tree_add_item(tree, hf, tvb, offset, 4, FALSE);
with the *only* difference being that you have the value in a
variable with the first example - so if you don't need the value, you
might as well just use proto_tree_add_item()
or
2) use proto_tree_add_text(), if you don't have a registered field, and
use "%f", as indicated by Jaap. (To get the *exact* same format, you
need to stringify FLT_DIG - I think it's defined by some standard C
header file, which might be <float.h> - and use it as the precision, so it's
"%." STRINGIFY(FLT_DIG) "f"
for floats. STRINGIFY() is a macro defined in <epan/strutil.h>; I think
the stuff it does is required by ANSI C to stringify a number.)
(BTW, we appear use %f for FT_FLOAT and %g for FT_DOUBLE; does anybody
know a reason why we shouldn't use %g for both of them?)