python python の struct は、主に C 構造体データを処理するために使用され、読み取り時に、まず Python の
string
1.struct.pack() と struct.unpack() 変換プロセスでは、主に 書式設定文字列(format
strings) が変換方法と形式を指定するために使用されます。
主なメソッドについて説明します:
1.1 struct.pack(fmt, v1, v2,...)
v1、v2 およびその他のパラメーターの値を 1 つのレイヤーにパックします。パッケージ化方法は次のように指定されます。 fmt 。ラップされたパラメータは fmt に厳密に準拠する必要があります。最後に、ラップされた文字列が返されます。
1.2 struct.unpack(fmt,string) 名前の通り、解凍します。たとえば、pack はパッケージ化され、unpacked は解凍に使用できます。データ(文字列)をアンパックしたタプルを返します。データが1つだけの場合でもタプルにアンパックされます。このうち、len(string) は calcsize(fmt) と等しくなければならず、これには calcsize
関数が関係します。 struct.calcsize(fmt): fmt形式で記述された構造体のサイズを計算するために使用されます。
フォーマット文字列は 1 つ以上のフォーマット文字で構成されます。これらのフォーマット文字の説明については、次の Python マニュアルを参照してください:
2. コード例 import struct
# native byteorder
buffer = struct.pack("ihb", 1, 2, 3)
print repr(buffer)
print struct.unpack("ihb", buffer)
# data from a sequence, network byteorder
data = [1, 2, 3]
buffer = struct.pack("!ihb", *data)
print repr(buffer)
print struct.unpack("!ihb", buffer)
Output:
'\x01\x00\x00\x00\x02\x00\x03'
(1, 2, 3)
'\x00\x00\x00\x01\x00\x02\x03'
(1, 2, 3)
まず、パラメータ 1、2、3 を変更します。パックされる前は、1,2,3 は明らかに Python のデータ型の integer に属します。パックされた後は、Python の文字列型に変換すると、'x01x00x00x00x02x00x03 と表示されます。 '。このマシンはリトル エンディアン ('リトル
end
その他、特殊なものについては公式ドキュメントのマニュアルを参照してください
フォーマット文字列の先頭にあります。は、ビッグ エンディアンとリトル エンディアンを決定するためのオプションの文字です。リストは次のとおりです:
追加されない場合、ネイティブの文字順序 (ビッグ エンディアンまたはリトル エンディアン) が使用されている場合でも、デフォルトは @ です。 C 構造体のサイズとメモリ内のアライメントはネイティブ マシン (ネイティブ) と一致します。たとえば、一部のマシンは 2 ビットの整数を持ち、一部のマシンは 4 ビットのアライメントを持ちます。 n ビットのアライメントを持つものもあります (n は不明で、その数もわかりません)
🎜 次のように説明される標準オプションもあります。 標準を使用すると、どの型にもメモリ アライメントがありません 🎜たとえば、先ほどのアプレットの後半で、使用されている書式文字列の最初の桁は!これはビッグエンディアン モードの標準アライメントであるため、出力は「x00x00x00x01x00x02x03」となり、上位ビット自体がメモリの上位アドレス ビットに配置されます。
以上がPython での struct.pack() と struct.unpack() の使用法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。