c-Wireshark解析器UINT64位掩码



我看到proto_register_field_array(const int parent, hf_register_info *hf, const int num_records);中使用的header_field中的位掩码字段是guint32,因此我不能使用64位掩码。有没有我可以四处走走的地方?

具体来说,我有一个60位的字段,所以我试图创建一个类型为FT_UINT64和位掩码为0xfffffffffffffff的字段,但当然,在编译C代码时,我得到了:

warning: implicit conversion from 'long' to 'guint32' (aka 'unsigned int') changes value from 1152921504606846975 to 4294967295 [-Wconstant-conversion]
            NULL, 0xfffffffffffffff,

提前感谢您的回复。

如果函数采用32位参数,则无法强制它理解64位参数,抱歉。看看其他函数是否能满足您的要求。

经过深入搜索,似乎唯一可能的解决方案是忘记头字段定义中的位掩码,并使用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);函数。

无论如何都要感谢:)

相关内容

  • 没有找到相关文章

最新更新