2016-02-10 53 views
0

添加符號32位值作爲雙在我的自定義解剖,我有32位有符號數據報gint32價值,它的頭字段被描述爲的Wireshark在協議樹

&hf_TargetPosition, 
{ "Target Position", "machine.RxPdo", 
FT_INT32, BASE_DEC, NULL, 0xffffffff, 
NULL, HFILL } 

加入這個項目proto_tree之前,我需要用雙倍的價值來擴展它。 由於存在返回簽署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將翻一番,使用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

「我怎樣才能添加到TPOS proto_tree?」您是否希望該字段的值爲原始積分值,即百萬分之一米或英寸或......,並將其顯示爲*分數米或英寸或...,或者您想要使該字段的值爲縮放版本,即以米或英寸爲單位的浮點值或...? –

+0

@GuyHarris我需要它是原始積分值並將其顯示爲分數單位。例如,對於'hf_TargetPosition',我得到「stmp32 = 68977386」,它應該被添加並顯示爲68.977386 –

回答

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); 
+0

謝謝!這正是我所期待的。 –