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
パッドバイト値なしcchar長さ1の文字列bsigned charintegerBunsignedcharinteger?_Boolbool(1)hshortintegerHunsignedshortinteger iintintegerIunsignedintintegerまたはlongllongintegerLunsignedlonglongqlonglonglong(2)Qunsignedlonglonglong(2)fフロートフロートd doublefloatschar[]stringpchar[]stringPvoid* 長い2.コード例RREEEVIEWコード最初、パッケージ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は学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

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

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。

Pythonを1日2時間学ぶだけで十分ですか?それはあなたの目標と学習方法に依存します。 1)明確な学習計画を策定し、2)適切な学習リソースと方法を選択します。3)実践的な実践とレビューとレビューと統合を練習および統合し、統合すると、この期間中にPythonの基本的な知識と高度な機能を徐々に習得できます。

PythonとCにはそれぞれ独自の利点があり、選択はプロジェクトの要件に基づいている必要があります。 1)Pythonは、簡潔な構文と動的タイピングのため、迅速な開発とデータ処理に適しています。 2)Cは、静的なタイピングと手動メモリ管理により、高性能およびシステムプログラミングに適しています。

PythonListSarePartOfThestAndardarenot.liestareBuilting-in、versatile、forStoringCollectionsのpythonlistarepart。

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

科学コンピューティングにおけるPythonのアプリケーションには、データ分析、機械学習、数値シミュレーション、視覚化が含まれます。 1.numpyは、効率的な多次元配列と数学的関数を提供します。 2。ScipyはNumpy機能を拡張し、最適化と線形代数ツールを提供します。 3. Pandasは、データ処理と分析に使用されます。 4.matplotlibは、さまざまなグラフと視覚的な結果を生成するために使用されます。
