如何使用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
文档以获取详细信息。
- 在为Ruby on Rails应用程序设置mysql数据库时出现“无法通过socket连接到本地MySQL服务器’/var/run/mysqld/mysqld.sock’”错误
- LOAD DATA LOCAL INFILE使用mysql2 gem导致格式错误的数据包错误
- OpenSSL :: SSL :: SSLContext SNI servername_cb不工作
- Ruby 2.1和Nokogiri安装错误?
- 错误:通过Homebrew安装ImageMagick时未定义的方法`=〜’
- ln:/usr/lib/libmysqlclient.18.dylib:文件存在
- 错误:执行gem时…(Gem :: FilePermissionError)
- 设置env,OSX rbenv和捆绑战斗
- OpenSSL :: X509 ::显示错误域名证书的证书