Wireshark:读取 8 个字节的时间戳

Wireshark: read 8 bytes of timestamp

我是在 'C' 中编写解析器的新手,我发现需要从数据包中读取 8 字节时间戳。

我正在尝试以下代码:

g_print("offset=%d, starttime=0x%08x\n", offset, tvb_get_letoh64(tvb, offset));

我得到:

offset=8, starttime=0x0362ea14

我期望的 8 个字节中只有 4 个字节。

我怎样才能读取它以便输出为:

offset=8, starttime=0x14ea620305779840

我也尝试使用以下方式阅读它:

g_print("offset=%d, starttime=0x%08x\n", offset, tvb_get_bits64(tvb, 64, 32, ENC_LITTLE_ENDIAN));
g_print("offset=%d, starttime=0x%08x\n", offset, tvb_get_bits64(tvb, 64, 64, ENC_LITTLE_ENDIAN));

它打印了时间戳的前 4 个字节,第二次调用打印了最后 4 个字节。我缺少一些非常基本的东西......

第二个问题,好的,假设我得到正确的值并将其转换为 nstime_t,如何将其格式化为 Date\time 格式,例如:

YYYY-MM-DDZHH:MM:SS:MMMM

非常感谢!

你用这个得到什么输出?

g_print("offset=%d, starttime=0x%08lx\n", offset, tvb_get_letoh64(tvb, offset));

关于你的第二个问题,这8个字节是什么意思?也许您可以使用 FT_ABSOLUTE_TIME 声明您的 hf 变量并使用 proto_tree_add_time()proto_tree_add_time_item()proto_tree_add_time_format_value()proto_tree_add_time_format()?

之类的东西