Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encoding 如何读取DAF(双精度阵列文件)";“转让”;文件夹?_Encoding - Fatal编程技术网

Encoding 如何读取DAF(双精度阵列文件)";“转让”;文件夹?

Encoding 如何读取DAF(双精度阵列文件)";“转让”;文件夹?,encoding,Encoding,我下载了一些DAF“传输”格式的数据,完全符合NASA的要求 这里没有解释: 如何读取此文件。以下是我试图理解的前几行: DAFETF NAIF DAF ENCODED TRANSFER FILE 'DAF/SPK ' '2' '6' 'NIO2SPK ' BEGIN_ARRAY 1 3895604 'URA111

我下载了一些DAF“传输”格式的数据,完全符合NASA的要求 这里没有解释:

如何读取此文件。以下是我试图理解的前几行:

 
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' 
据美国宇航局称,这是Fortran程序的流行格式, 但谷歌一点帮助都没有(维基百科没有条目) 要么)

(位于ucla.edu)对文件格式有完整的描述

另外,请访问Github。它似乎提供了您正在寻找的DAFTB函数

编辑对于记录(咳嗽),从本质上看,这种格式似乎从来没有被人类阅读过。它是一种传输格式,可以在任何合适的可执行代码中转换回可用的二进制文件

你没有解释你为什么要这么做。因此,除非您正在编写一个文件解析器(已经用至少两种语言完成了),否则我不确定能够读取原始值有什么好处


严格地说,你的问题的答案是你用软件(见上面的链接)来阅读它。

好的,我想我终于找到了它的一部分。对于 参考,原始文件(大小高达162M)是 ura111.bsp文件位于:

并在以下位置使用toxfr程序转换为ura111.xsp:

小文件:

解释有关主文件的更多信息

像“-BC18166^8”这样的数字实际上是双精度的数字 采用改进的十六进制IEEE-754格式。维基百科有点解释 此格式如下:

还有IEEE-754到十进制转换器,如下所示:

(和许多其他人)

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

参考“-BC18166^8”转换如下:

  • “BC18166”的十进制值为197230950

  • 我们现在重复除以16,直到结果小于1(英寸) 换句话说,我们除以16^(长度为“BC18166”),得到 0.734742544591427

  • “^8”表示我们乘以16**8得到3155695200

  • 前导“-”表示我们加一个减号得到-3155695200

当然,我们可以把第2步和第3步结合起来,然后再乘以 197230950乘16

@klugerama,回答你的问题,是的,我正在写一个文件 解析器,这次是Perl,作为程序的一部分 确定太阳系中各种物体的位置

我已经分析了NASA有关行星(和地球)的文件 在这里:


但它们的格式大不相同,而且更容易解析

好的,我想我理解元数据,但是像“5594FC676368^1”这样的条目呢?在您引用的UCLA托管文档中,在“元素记录”下,它指出这些是“双精度数字”,但“5594FC676368^1”到底是什么数字?我以前从未见过这种格式,我认为该文档也不能解释它?@barrycarter我没有看到其余的数据,但根据文档,看起来这些数字可能不是“双精度数字”;它们可能是
保留记录“、
摘要记录”或“名称记录”中的值。