为os.time {}值添加一个大偏移量

时间:2013-11-22 09:59:04

标签: lua wireshark-dissector

我正在用lua编写Wireshark解剖器并尝试解码基于时间的协议字段。

我有两个组成部分1)

local ref_time = os.time{year=2000, month=1, day=1, hour=0, sec=0}

和2)

local offset_time = tvbuffer(0:5):bytes()

5字节(大于uint32范围)ByteArray()包含自 ref_time 以来的毫秒数(以网络字节顺序排列)。现在我正在寻找一个人类可读的日期。我不知道这会如此困难,但是第一眼似乎我不能简单地为 os.time 值添加偏移量,第二个偏移量超过 Int32 范围。 。我测试的大多数功能似乎都截断了超出的输入值。

关于如何从 ref_time offset_time 获取日期的任何想法?

非常感谢!

1 个答案:

答案 0 :(得分:2)

由于ref_time以秒为单位且offset_time以毫秒为单位,因此请尝试:

os.date("%c",ref_time+offset_time/1000)

我认为offset_time是一个数字。如果没有,只需使用算术重建它。请记住,Lua使用双精度数字,所以一个5字节的整数就可以了。