Python の struct.pack() 関数と struct.unpack() 関数の詳細な紹介
Pythonのstructは主にC構造体のデータを読み込む際に、まずPythonの文字列型に変換されてから、タプルなどのPythonの構造化型に変換されます。一般に、入力チャネルはファイルまたはネットワーク バイナリ ストリームから取得されます。
1.struct.pack() と struct.unpack()
変換プロセス中、フォーマット文字列は主に変換方法と形式を指定するために使用されます。
主なメソッドについて説明します:
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 マニュアルを参照してください。 x
c | char | ||
---|---|---|---|
b | signed char | integer | |
B | unsignedchar | integer | |
? | _Bool | bool | |
h | short | integer | |
H | unsignedshort | integer | |
i | int | integer | |
I | unsignedint | integerまたはlong | |
l | long | integer | |
L | unsignedlong | long | |
q | longlong | long | |
Q | unsignedlonglong | long | |
f | フロート | フロート | |
d | double | float | |
s | char[] | string | |
p | char[] | string | |
P | void* | 長い | |
2.コード例 | |||
RREEE | VIEWコード最初、パッケージ1,2,3、パッケージングの前に、2,3は明らかに整数に属しますPython データ型は、パッキング後に C 構造のバイナリ文字列になります。Python 文字列型に変換すると、「x01x00x00x00x02x00x03」と表示されます。このマシンはリトル エンディアン (「リトル エンディアン」) であるため、ビッグ エンディアンとリトル エンディアンの違いについてはここを参照してください。そのため、上位ビットは下位アドレス セグメントに配置されます。i は C 構造体の int 型を表します。このマシンは 4 ビットを占有し、1 は 01000000 として表現されます。h は C 構造体の short 型を表し、2 ビットを占有するため、0200 として表現されます。b は、C 構造体の signed char 型を表し、1 ビットを占有します。他の構造体の変換も同様に行われます。一部の特殊なものについては、公式ドキュメントのマニュアルを参照してください。 | Format文字列の先頭には、決定するためのオプションの文字があります。ビッグ エンディアンとリトル エンディアンのリストは次のとおりです。 |
<
リトルエンディアン標準> ;
ビッグエンディアン標準!
標準 |
付加されない場合、デフォルトは@です。マシンの文字順序が使用される場合でも(ビッグエンディアンまたはリトルエンディアン)、C構造体のサイズとメモリ内のアライメントはマシン(ネイティブ)と一致します。整数が 2 ビットのマシンもあれば、4 ビットのマシンもあり、メモリ内で 4 ビットがアライメントされているマシンもあれば、n ビットがアライメントされているマシンもあります (n は不明で、何ビットであるかはわかりません)。 次のように説明されている標準オプションもあります: 標準を使用すると、どのタイプでもメモリ アラインメントが行われません。 たとえば、先ほどのアプレットの後半では、使用されているフォーマット文字列の最初のビットは!これはビッグエンディアン モードの標準アライメントであるため、出力は「x00x00x00x01x00x02x03」となり、上位ビット自体がメモリの上位アドレス ビットに配置されます。 Python の struct.pack() 関数と struct.unpack() 関数の詳細については、PHP 中国語 Web サイトに注目してください。
|
---|

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。
