encoding - 如何读取 DAF( double 组文件) "transfer"文件?

标签 encoding

我下载了一些 DAF“传输”格式的数据,NASA 完全
无法在这里解释:

http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/req/daf.html#Conversion%20and%20Transfer%20of%20DAF%27s

我如何阅读这个文件。这是我试图理解的前几行:

 
DAFETF NAIF DAF ENCODED TRANSFER FILE 
'DAF/SPK ' 
'2' 
'6' 
'NIO2SPK                                                     ' 
BEGIN_ARRAY 1 3895604 
'URA111                                  ' 
'-BC186A96D0E76^8' 
'BC0DDF032F041^8' 
'2BD' 
'7' 
'1' 
'3' 
1024 
'-BC18166^8' 
'FD2^4' 
'-DA4A19AC2BCD18^4' 
'-4D5E7E1A67739^4' 
'1D46248537C30E^5' 
'EBA587DFA5E3B^3' 
'-26885CE73CB0D^4' 
'-BF0DC6EDB5B2C8^2' 
'129C1CFEABE48^3' 
'5594FC676368^1' 
'-472EBF2225A^1' 
'-2198AE1963D^0' 
'79CC4CA0C^-1' 
'FDD9792D82^-2' 
'2001D81A^-2' 
'333BCEE2BDD724^4' 
'-D78AA10831D9C8^4' 
'-6D712677574DF8^4' 
'283A14783CDC^4' 
'90AC22194ABF6^3' 
'-1DEF6219F664FE^3' 
'-47318F604096^2' 
'9B805F405B1C^1' 
'1275B947E2AC^1' 
'-16A664664D^0' 
'-2F614B9F5^-1' 
'-B7C3E41D^-3' 
'2F3D71F8^-3' 

根据 NASA 的说法,这是/曾经是 Fortran 程序的流行格式,
但谷歌根本没有帮助(维基百科没有条目
任何一个)。

最佳答案

好吧,我想我终于至少弄清楚了其中的一部分。为了
引用,原始文件(大小高达 162M)是
ura111.bsp 文件在:

http://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/satellites/

并使用 toxfr 程序转换为 ura111.xsp:

http://naif.jpl.nasa.gov/pub/naif/utilities/SunIntel_32bit/

小文件:

http://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/satellites/ura111.cmt

http://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/satellites/ura111.inp

解释更多关于主文件的信息。

像“-BC18166^8”这样的东西真的是 double 数字,写成
修改后的十六进制 IEEE-754 格式。维基百科有点解释
这种格式在这里:

http://en.wikipedia.org/wiki/IEEE-754

还有像这样的 IEEE-754 到十进制转换器:

http://www.h-schmidt.net/FloatConverter/ (和许多其他人)

但是,这些并不能解释/转换 NASA 使用的确切格式,即
是我困惑的原因之一。

供引用“-BC18166^8”转换如下:

  • “BC18166”的十进制值为 197230950
  • 我们现在反复除以 16,直到结果小于 1(在
    换句话说,我们除以 16^(“BC18166”的长度)),得到
    0.734742544591427
  • '^8' 表示我们乘以 16**8 得​​到 3155695200
  • 前导的“-”只是意味着我们添加一个减号得到 -3155695200

  • 当然,我们可以将第 2 步和第 3 步结合起来,然后相乘
    197230950 由 16。

    @klugerama,回答你的问题,是的,我正在尝试写一个文件
    解析器,这次是在 Perl 中,作为一个程序的一部分,它可以准确地
    识别太阳系中各种物体的位置。

    我已经解析了与行星(和地球的)有关的 NASA 文件
    自己的月亮)在这里:

    ftp://ssd.jpl.nasa.gov/pub/eph/planets/ascii/

    但这些格式大不相同,而且更容易解析。

    关于encoding - 如何读取 DAF( double 组文件) "transfer"文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21511224/

    相关文章:

    encoding - JRE国际化了吗?

    javascript - 如何在 PHP 中正确编码 JavaScript 以附加到页面?

    asp.net-mvc-3 - 禁用 ASP.NET-MVC3 中 unicode 字符的编码

    powershell - 将文件转换为 UTF-8 : Get-Content : Exception of type 'System.OutOfMemoryException' was thrown

    c++ - 从 MySQL 中检索 xml

    c#-4.0 - C# - 从 .txt 文件读取俄语文本

    oracle - Hibernate Oracle 和字符编码

    python - 在python中将 "\x"转义字符串转换为可读字符串

    Java - 字符串到固定字节

    java utf-8编码字符串中奇数个字符的字节变化