我发现header_field
中使用的proto_register_field_array(const int parent, hf_register_info *hf, const int num_records);
中的位掩码字段是guint32
,因此我无法使用64位掩码。无论如何我可以到处走走吗?
具体来说,我有一个60位字段,所以我试图创建一个类型为FT_UINT64
和位掩码0xfffffffffffffff
的字段,但当然,在编译C代码时我得到:< / p>
warning: implicit conversion from 'long' to 'guint32' (aka 'unsigned int') changes value from 1152921504606846975 to 4294967295 [-Wconstant-conversion]
NULL, 0xfffffffffffffff,
提前感谢您的回复。
答案 0 :(得分:0)
如果函数采用32位参数,则无法强制它理解64位参数,抱歉。寻找一些其他功能是否可以做你想要的。
答案 1 :(得分:0)
经过深入搜索,似乎唯一可行的解决方案是忘记头字段定义中的位掩码并使用proto_tree_add_bits_item(proto_tree *tree, const int hf_index, tvbuff_t *tvb, const guint bit_offset, const gint no_of_bits, const guint encoding);
函数。
非常感谢:)