使用IDL函数作为参考在Python中读取二进制文件

时间:2014-10-03 21:15:39

标签: python binaryfiles idl

我想用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中复制它。任何帮助表示赞赏。感谢。

我不是在寻找翻译。我正在寻找一个跳板,我可以尝试解决这个问题。

1 个答案:

答案 0 :(得分:1)

要读取二进制文件(假设这是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的方法,以便我们连接一些字符串或writing to a new file。这应由用户决定。

顺便说一句,如果您没有将二进制文件检索为字符串,那么there our built in methods that turn unicode characters into ascii values by taking in there unicode value (binary included)

关于阅读文件,可以使用the same link for reading and writing to a file