如何使用Ruby将数组转换为64位双Mac绝对时间?

是否可以将存储为每个元素的二进制或hex值转换为64位双麦绝对时间? 当我使用p var_bytes控制台检查数组时,控制台显示以下输出。

 \000\000\000\000\000\000\000\000\000\000\000\234\225x\266A\000\000\000\345\005\230\264 

是否可以将64位双麦克风绝对时间中的上述数组元素转换为字符串?

我的代码只是一个简单的do..end

 puts "\nClose off the page header#{y.unpack("n")}\n" z.scan(/(.{8})(.{8})(.{4})(.{4})(.{4})(.{4})(.{8})(.{8})(.{8})(.*\w)/m).each do |j,k,l,m,n,o,p,q,r,s| puts "\nContent1#{j.unpack("n")}\n" puts "\nContent2:#{k.unpack("n")}\n" puts "\nContent3:#{l.unpack("n")}\n" puts "\nContent4:#{m.unpack("n")}\n" puts "\nContent5:#{n.unpack("n")}\n" puts "\nContent6:#{o.unpack("n")}\n" puts "\nContent7:#{p.unpack("n")}\n" expdt = Time.at((q.unpack("L"))[0]) createdt = Time.at((r.unpack("L"))[0]) puts "Date1:\n#{expdt}\n" puts "\nDate2:\n#{createdt}\n" puts "\nCookie:\n" puts s.split(/\0/m) end end 

将这个负值转换为正数的简单方法是什么,所以Time.at不会给出错误,然后根据MAC Epoch时间转换它?

试试这个:

 MAC_EPOCH = Time.gm(2001,1,1) def bin2time(bin) return MAC_EPOCH + (bin.unpack "D")[0] end 

其中bin是双精度浮点数的8字节表示。

您可能需要将“D”更改为“E”或“G”,具体取决于您从何处获取数据。 查看unpack文档以获取详细信息。