2

Pythonで読み込もうとしている.datファイルがあります。ファイル形式は次のとおりです。

1.1 CDR description1 
Field   length(bytes)   Offset 
x   4            0
x1  2            4
x2  1            6
x3  1            7
......
......
......
x4  16          210 
x5  4           226 
x6  70          230
Total length of information     300

これらはCDRレコードであり、モジュールで読み込もうとしていstructますが、特定のファイル形式で使用する方法がわかりません...何か助けがありますか?

4

1 に答える 1

3

モジュールが各フィールドを理解するには、各フィールドにどのような情報が格納されているかを知る必要があります。struct

たとえば、オフセット0の最初のフィールドの長さは4バイトです。これは、int(-2,147,483,648から+2,147,483,647の範囲)またはunsigned int代わりに(0から4,294,967,295の範囲)であることを意味します。単精度浮動小数点数の場合もあります。

また、ファイル形式のエンディアンを把握する必要もあります。これが明示的に指定されていない場合は、少し実験するか、コンテキストから推測する必要があります(たとえば、Windowsファイル形式はほとんどの場合リトルエンディアンです)。

最初の4つの値のみを解凍する場合は、正しいバイト数(フォーマットでは8)を読み取り、これをstruct.unpack一連のフォーマット文字と一緒に関数に渡して、構造体にどのタイプを期待するかを指示します。リトルエンディアンのデータを想定し、最初の4つのフィールドが、それぞれunsigned int、unsigned short、および2つのunsigned charを表す場合、次を使用します。

with open('something.cdr', 'rb') as data:
    x, x1, x2, x3 = struct.unpack('<IH2B', data.read(8))
于 2012-07-25T10:36:45.607 に答える