我正在用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 获取日期的任何想法?
非常感谢!
答案 0 :(得分:2)
由于ref_time
以秒为单位且offset_time
以毫秒为单位,因此请尝试:
os.date("%c",ref_time+offset_time/1000)
我认为offset_time
是一个数字。如果没有,只需使用算术重建它。请记住,Lua使用双精度数字,所以一个5字节的整数就可以了。