Pythonの構造体のデータフォーマット変換モジュールの方法:あなたの基本的なプログラミングpytho

Pythonは非常に単純な言語であり、データ型表現は、事前に定義された言語の多くの他のタイプ(例:C#で、光整数定義8上)とは異なり、それが唯一の6つの基本的なタイプが定義されています。文字列、整数、浮動小数点数、タプル、リスト、辞書。データのこれら6種類によって、我々はほとんどの作業を行うことができます。しかし、Pythonは必要他のプラットフォームとネットワークを介して対話する時、それは考慮に入れ、他のプラットフォームや言語の相互変換の問題と、これらのデータ・タイプ間のタイプを取る必要があります。アナロジー:クライアントを書くためのC ++は、Pythonは、このデータを表現するために4バイトの整数を受け取り、Pythonで書かれたサーバにintデータ型(4バイト)の変数を送信し、どのようにそれを知っている整数のPythonを解析するには?Pythonの標準モジュールの構造体は、この問題を解決するために使用されます。

構造体のモジュールのコンテンツあまり、あまりにも難しいことではありません、以下の最も一般的に使用される方法がここで説明されています
struct.pack

struct.pack Pythonの値は、文字ベースのフォーマットのために、文字列(Pythonの文字列はバイトストリームまたはバイト配列として理解することができないバイト(バイト)タイプ、理由)に変換します。どの関数のプロトタイプです:、パラメータ文字列の形式はFMT struct.pack(FMT、V1、V2、...)です。V1は、V2、...変換するPythonの値を表します。次の例では、文字列(バイトストリーム)に2つの整数を変換します。

import struct
  
a = 20
b = 400
  
str = struct.pack("ii", a, b) 
#转换后的str虽然是字符串类型,但相当于其他语言中的字节流(字节数组),可以在网络上传输
print 'length:', len(str)
print str
print repr(str)
  
#---- result
#length: 8
#  ----这里是乱码
#'/x14/x00/x00/x00/x90/x01/x00/x00'

指定子は、「i」は「II」、変換int型を表し、二つの変数はintを表します。結果の長さは変換後、あなたは、結果はバイナリデータであるため、出力結果は、それが文字化けし、文字化けされ見ることができ、8バイト(4バイト整数型、INT 2つの8バイト)です。組み込み関数をそれぞれ20及び400取得のreprパイソン認識可能な文字列であって、前記進数0×00000014、0×00001009に使用することができます。
struct.unpack

struct.unpackのpythonへのデータ型のバイトストリームのために、struct.packコントラストで作業一致を行います。これは、関数プロトタイプである:struct.unpack(FMT、文字列)、関数はタプルを返します。以下は簡単な例です:

str = struct.pack("ii", 20, 400)
a1, a2 = struct.unpack("ii", str)
print 'a1:', a1
print 'a2:', a2
  
#---- result:
#a1: 20
#a2: 400
struct.calcsize

struct.calcsize(II「」)、戻り8:などのフォーマット文字列に対応する演算結果についてstruct.calcsize長さ。占有int型の長さの2つのタイプなので8バイトです。
struct.pack_into、struct.unpack_from

これらの2つの関数は、Pythonのマニュアルで紹介されていますが、何の例は、使用方法を説明されていません。実際に、彼らは多くの練習で使用されていません。Googleは長い時間のために、例を見つけるために、共有について投稿しました:

import struct
from ctypes import create_string_buffer
  
buf = create_string_buffer(12)
print repr(buf.raw)
  
struct.pack_into("iii", buf, 0, 1, 2, -1)
print repr(buf.raw)
  
print struct.unpack_from('iii', buf, 0)
  
#---- result
#'/x00/x00/x00/x00/x00/x00/x00/x00/x00/x00/x00/x00'
#'/x01/x00/x00/x00/x02/x00/x00/x00/xff/xff/xff/xff'
#(1, 2, -1)

フォーマット文字列について

マニュアルPythonでは、一般的な文字の種類に対応するPythonの形式でC言語で使用されるタイプ与えられた:ここに画像を挿入説明
良いのpythonの収集を推奨する口の中の最後の言葉[ 入力する]をクリック ]、スキルを学ぶ、古いタイマーの多くは、経験、インタビューを学び、そこにありますスキル、経験、他の職場のシェアは、より多くの我々は慎重にゼロベースの入門情報、実際のプロジェクトに関する情報を準備し、タイミングはいくつかの学習方法と細部への注意を払う必要性を共有し、毎日Pythonプログラマの技術を説明するために持っています

公開された50元の記事 ウォン称賛34 ビュー70000 +

おすすめ

転載: blog.csdn.net/haoxun08/article/details/104909335