我有一个以 .assoc 结尾的文件,显然是一个“二进制关联文件”,但我无法在网上找到有关此类文件的信息。它由fortran和idl读取,为49Mb,我正在尝试将它读入python。这可能是一个悬而未决的问题,但任何人都可以提出一种方法来探测文件的结构以了解我如何阅读它吗?
我知道该文件是火星上海拔的地图,大概是二维的。它有一个简短的 ascii 标头:
7200 3600 MOLA .05 dg/px topo 5/2002
---------------------------------------------------------
header length 14400 bytes
map X size 7200
map Y size 3600
no-data value 30303
maximum value 21197
minimum value -8204
The map is stored as an INT array with X as
longitude and Y as latitude. The map is assumed to be
global in coverage.
---------------------------------------------------------
很抱歉这个格式不正确的问题,但是关于如何探测未知文件类型的一般建议将不胜感激。或者,如果您知道这种文件类型,那就更好了!
这是读取文件的 idl 代码片段:
ELMAP='elevmap.assoc'
OPENR, ELUN, ELMAP, /GET_LUN
B = ASSOC(ELUN,BYTARR(100)) ; assoc header
HEADER = STRING(B[0]) ; read the header
NLON = 0 ; 'fix' no. of longitudes
NLAT = 0 ; 'fix' no. of latitudes
READS,HEADER,NLON,NLAT ; read no. of lons/lats
EXG = NLON/360 ; longitude scale (pix/deg)
EYG = NLAT/180 ; latitude scale (pix/deg)
EMAP = ASSOC(ELUN,INTARR(1),14400)
前 30 个字节的 hexdump(我做了“od -H -N 30 elevmap.assoc”)如下所示:
0000000 20202020 20202020 30303237 20202020
0000020 20202020 30363320 4f4d2030 0000414c
0000036
标头后前 30 个字节的十六进制转储(“od -H -j 14400 -N 30 elevmap.assoc”,如果我误解了请告诉我)如下所示:
0034100 0e970e93 0ea50e9d 0ea50ea5 0ea50ea5
0034120 0ea50ea5 0ea40ea4 0ea20ea3 00000ea2
0034136