在我的自定义解剖器中,我在数据报中有32位带符号的 gint32 值,其标题字段描述为
&hf_TargetPosition,
{ "Target Position", "machine.RxPdo",
FT_INT32, BASE_DEC, NULL, 0xffffffff,
NULL, HFILL }
在将此项添加到proto_tree之前,我需要使用double值来缩放它。 由于没有返回签名gint32的tvb_get *函数,我使用 tvb_get_letohl 函数获取32位有符号值
gint32 stmp32 = (gint32)tvb_get_letohl(tvb, suboffset);
gdouble tpos = (gdouble)stmp32 * 0.000001;
如何将tpos添加到proto_tree?
作为一种解决方法,我尝试不将 tpos 强制转换为double并使用 proto_tree_add_int_format_value 函数
gint32 tpos = stmp/1000000;
proto_tree_add_int_format_value(Dout_tree, hf_TargetPosition, tvb, suboffset, 4, tpos, "%lf");
但是在显示的树中无法获得所需的带符号小数点/浮点值。
答案 0 :(得分:1)
我需要它作为原始积分值并将其显示为小数单位。
然后你想要
gint32 stmp32;
...
stmp32 = (gint32)tvb_get_letohl(tvb, suboffset);
proto_tree_add_int_format_value(Dout_tree, hf_TargetPosition, tvb, suboffset, 4, stmp32, "%lf", stmp32/1000000.0);