-1

私はPythonにかなり慣れておらず、どこかで働き始めたばかりです。去った開発者によってここに書かれたコードの一部を理解しようとしてきましたが、私は物事を理解することができませんでした。

基本的に、私はunpack()が何をするのかを知っていますが、いくつかの場所で使用されている形式は私を当惑させます!

var1, var2, var3, var4 = struct.unpack('!6xBB4xI4xI', data)

4つの変数の代入ステートメントです。今、これは私が開梱に使用されているフォーマットについて理解したものであり、私は正しいと信じています:-

'x':値の分離(以下の回答で@ shx2が指摘するパディングビット)

!6:最初から7番目の文字(インデックス0から開始)をビッグエンディアン形式で読み取ります

I:符号なし整数

Now, I haven't been able to figure out the formats:-
BB4 - does that mean read 8 bytes (as the B stands for unsigned char, so BB could mean 2 sets of unsigned char)?
I4 - reading 4 bytes and getting the integer value!

他の2つの形式についての私の解釈も非常に間違っている可能性があります-私はPythonオンラインドキュメントとデバッグ中に表示されるデータからそれを理解しようとしています。私が間違っているかもしれないところはどこでも私を訂正してください。

4

2 に答える 2

2

あなたは道を外れています...ドキュメントを読んでください。

!はネットワーク順 (= ビッグエンディアン) です。

xパッドバイトです。

そして、あなたは残りを理解できると確信しています。

于 2013-03-10T17:46:17.477 に答える
0

ビッグ エンディアン形式のデータでは、次のstruct.unpack('!6xBB4xI4xI', data)ことを意味します。

6: 6 パッド バイト
B: 1 つの unsigned char
B: 1 つの unsigned char 4: パッド バイト
I: 1 つの Unsigned Int
4: パッド バイト
I: 1 つの Unsigned Int

合計で、構造体は 24 バイトです

于 2013-03-10T19:05:11.867 に答える