4

Python の unpack 関数と、それがフォーマット文字列をどのように使用するかを理解しようとしています。

例として、unsigned int (サイズ、4 バイト) に対応するフォーマット文字列 "I" を使用しています。

ドキュメントによると、 unpack 関数は文字列を受け取り、それをフォーマット文字列に基づいて値のリストに変換します。

http://docs.python.org/2/library/struct.html

したがって、入力値を文字列「test」として使用しました。出力は次のとおりです。

>>> import struct
>>> input="test"
>>> l = struct.unpack("I", input)[0]
>>> print l
1953719668

出力値が入力からどのように派生したかを理解しようとしています。

>>> from struct import *
>>> calcsize('I')
4

「I」のサイズは 4 バイトです。文字列 "test" には 4 文字 (4 バイト) があります。各文字を対応する 16 進 ASCII 値に変換し、リトル エンディアン順に格納しようとしましたが、上記の出力と一致しません。

どんな助けでも大歓迎です。

4

1 に答える 1

5

文字列をそのまま解凍する場合に使用4sします。

>>> struct.unpack('4s', 'test')[0]
'test'

1953719668 は次のように導出されます: (リトルエンディアン)

>>> ord('t') + (ord('e') << 8) + (ord('s') << 16) + (ord('t') << 24)
1953719668
于 2013-07-13T05:56:37.860 に答える