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

我正在使用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(),包含自参考时间以来的毫秒数(以网络字节顺序)。现在我正在寻找一个人类可读的日期。我不知道这为什么会这么难,但是首先似乎我不能简单地将一个偏移量添加到os.time值上,其次,偏移量超过了Int32范围……大多数我测试过的函数似乎会截断超出输入值。

有任何想法,我如何从ref_timeoffset_time中获得日期?

非常感谢!

点赞
用户107090
用户107090

由于ref_time的单位是秒,而offset_time的单位是毫秒,所以尝试使用以下方式:

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

我假设offset_time是一个数字。如果不是,只需使用算术重构即可。请记住,Lua使用双精度浮点数来表示数字,因此一个5字节的整数完全可以适用。

2013-11-22 11:56:33