古いコードをデバッグしようとして、強制的にidlを紹介しています。
ascii ヘッダーを持つバイナリ イメージ ファイルがあります (興味がある場合は、火星の THEMIS IR BTR イメージです)。このコードは、OPENR を使用してユニット 1 としてファイルを開き、ASSOC(1,BYTARR(256)) を使用してファイルの最初の 256 バイトを読み取ります。それからの戻り値は 256 個の ASCII 文字 dex 値ですが、それらはほとんどが英数字に対応しない高い数値または低い数値であり、ファイルにあることがわかっているヘッダーとは関係ありません。
診断に役立つ可能性があることの 1 つは、元のファイルがファイルの g-zip バージョンであることです。直接開こうとすると (たとえば、less を使用して)、ヘッダーを読み取ることができます。しかし、最初に解凍 (gzip -c filename.IMG.gz > filename.IMG) してから再度読み取ろうとすると、バイナリの gobbledegook が得られます。(less を開く前に、「filename.IMG はバイナリ ファイルである可能性があります。それでも表示しますか?」という警告が表示されます)。
助言がありますか?
IDL コードは次のとおりです。
CLOSE,1
OPEN,1,FILENAME
A = ASSOC(1,BYTARR(256))
B = A[0]
print,'B - ',B
H = STRING(B)
print,'H - ',H
そして、これが私に与えるものです:
B - 31 139 8 8 7 17 238 79 0 3 ... (and on for 256 characters)
H - [Some weird symbol]
純粋なASCIIテストファイルで試してみましたが、期待どおりに動作します。