1

古いコードをデバッグしようとして、強制的に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テストファイルで試してみましたが、期待どおりに動作します。

4

2 に答える 2

1

31 139 8は、「収縮した」ファイルのGZIPヘッダーの先頭です。

http://www.gzip.org/zlib/rfc-gzip.html#file-format

そうです、ファイルは最初に解凍する必要があるように見えます。

gunzipでファイルを解凍してみて、ヘッダーをもう一度確認してください。31 139 08 ...の場合も、2回圧縮されているようです。

それ以外の場合は、それが何であれ、最終的に解凍された可能性があります。圧縮されていないファイルがデコードされない理由はまだわかりません。

于 2012-07-02T23:30:14.437 に答える
1

COMPRESSキーワードを試してくださいOPEN:

openr, 1, filename, /compress

このCOMPRESSキーワードは圧縮ファイルを参照するため、圧縮ファイルの読み取りと書き込みの両方に使用されます。

于 2012-07-03T19:33:14.783 に答える