使用IDL函数作为引用读取Python中的二进制文件



我想用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值。

关于文件的读取,可以使用用于读取和写入文件的相同链接。

最新更新