我想用Python读取一个二进制文件。到目前为止,我已经使用了numpy.fromfile
,但还无法弄清楚结果数组的结构。我有一个IDL函数可以读取文件,所以这是我唯一要做的事情。我对IDL一无所知。
以下IDL函数将读取文件并返回lc、zgrid、fnu、efnu等:
openr,lun,'file.dat',/swap_if_big_endian,/get_lun
s = lonarr(4) & readu,lun,s
NFILT=s[0] & NTEMP = s[1] & NZ = s[2] & NOBJ = s[3]
tempfilt = dblarr(NFILT,NTEMP,NZ)
lc = dblarr(NFILT) ; central wavelengths
zgrid = dblarr(NZ)
fnu = dblarr(NFILT,NOBJ)
efnu = dblarr(NFILT,NOBJ)
readu,lun,tempfilt,lc,zgrid,fnu,efnu
close,/all
但我不确定如何在Python中复制这一点。感谢您的帮助。谢谢
我不想找翻译。我正在寻找一个跳板,从中我可以尝试解决这个问题。
要读取二进制文件(假设这是32位或用户已经知道的),我首先会制作一个方法,使用
>>> a = '00011111001101110000101010101010'
>>> int(a,2)
523700906
也就是说,我们的方法必须将其从我们自己制作的东西中转换出来,例如:
def binaryToAscii(string_of_binary):
'''
binaryToAscii takes in a string of binary and returns an ASCII character
'''
charVal = int(string_of_binary,2)
char = chr(charVal)
return char
下一步是制作一个方法,该方法以这样的方式合并binaryToAscii
,即我们要么连接一些字符串,要么写入一个新文件。这应该由用户决定。
顺便说一句,如果你没有将二进制文件作为字符串检索,那么我们的内置方法可以通过接收unicode值(包括二进制文件)将unicode字符转换为ascii值。
关于文件的读取,可以使用用于读取和写入文件的相同链接。