pytho****@googl*****
pytho****@googl*****
2011年 11月 14日 (月) 17:33:20 JST
Revision: 66ab97834a6c Author: Arihiro TAKASE <hinac****@gmail*****> Date: Mon Nov 14 00:32:29 2011 Log: 差分翻訳 2.7.2: library/struct http://code.google.com/p/python-doc-ja/source/detail?r=66ab97834a6c Modified: /library/struct.rst ======================================= --- /library/struct.rst Mon Apr 18 05:28:03 2011 +++ /library/struct.rst Mon Nov 14 00:32:29 2011 @@ -163,46 +163,46 @@ 始まっている場合のものです。native サイズ使用時にはパックされた値 の大きさはプラットフォーム依存です。 -+--------------+-------------------------+------------------+--------------+------+ -| フォーマット | C での型 | Python 型 | 標準のサイズ | 備考 | -+==============+=========================+==================+==============+======+ -| ``x`` | pad byte | no value | | | -+--------------+-------------------------+------------------+--------------+------+ -| ``c`` | :c:type:`char` | 長さ 1 の文字列 | 1 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``b`` | :c:type:`signed char` | 整数型 (integer) | 1 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``B`` | :c:type:`unsigned char` | 整数型 | 1 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``?`` | :c:type:`_Bool` | 真偽値型(bool) | 1 | \(1) | -+--------------+-------------------------+------------------+--------------+------+ -| ``h`` | :c:type:`short` | 整数型 | 1 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``H`` | :c:type:`unsigned short`| 整数型 | 2 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``i`` | :c:type:`int` | 整数型 | 4 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``I`` | :c:type:`unsigned int` | 整数型 | 4 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``l`` | :c:type:`long` | 整数型 | 4 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``L`` | :c:type:`unsigned long` | 整数型 | 4 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``q`` | :c:type:`long long` | 整数型 | 8 | \(2) | -+--------------+-------------------------+------------------+--------------+------+ -| ``Q`` | :c:type:`unsigned long | 整数型 | 8 | \(2) | -| | long` | | | | -+--------------+-------------------------+------------------+--------------+------+ -| ``f`` | :c:type:`float` | 浮動小数点型 | 4 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``d`` | :c:type:`double` | 浮動小数点型 | 8 | | -+--------------+-------------------------+------------------+--------------+------+ -| ``s`` | :c:type:`char[]` | 文字列 | | | -+--------------+-------------------------+------------------+--------------+------+ -| ``p`` | :c:type:`char[]` | 文字列 | | | -+--------------+-------------------------+------------------+--------------+------+ -| ``P`` | :c:type:`void \*` | 整数型 | | | -+--------------+-------------------------+------------------+--------------+------+ ++--------------+--------------------------+------------------+--------------+------------+ +| フォーマット | C での型 | Python 型 | 標準のサイ ズ | 備考 | ++==============+==========================+==================+==============+============+ +| ``x`` | pad byte | no value | | | ++--------------+--------------------------+------------------+--------------+------------+ +| ``c`` | :c:type:`char` | 長さ 1 の文字列 | 1 | | ++--------------+--------------------------+------------------+--------------+------------+ +| ``b`` | :c:type:`signed char` | 整数型 (integer) | 1 | \(3) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``B`` | :c:type:`unsigned char` | 整数型 | 1 | \(3) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``?`` | :c:type:`_Bool` | 真偽値型(bool) | 1 | \(1) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``h`` | :c:type:`short` | 整数型 | 1 | \(3) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``H`` | :c:type:`unsigned short` | 整数型 | 2 | \(3) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``i`` | :c:type:`int` | 整数型 | 4 | \(3) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``I`` | :c:type:`unsigned int` | 整数型 | 4 | \(3) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``l`` | :c:type:`long` | 整数型 | 4 | \(3) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``L`` | :c:type:`unsigned long` | 整数型 | 4 | \(3) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``q`` | :c:type:`long long` | 整数型 | 8 | \(2), \(3) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``Q`` | :c:type:`unsigned long | 整数型 | 8 | \(2), \(3) | +| | long` | | | | ++--------------+--------------------------+------------------+--------------+------------+ +| ``f`` | :c:type:`float` | 浮動小数点型 | 4 | \(4) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``d`` | :c:type:`double` | 浮動小数点型 | 8 | \(4) | ++--------------+--------------------------+------------------+--------------+------------+ +| ``s`` | :c:type:`char[]` | 文字列 | | | ++--------------+--------------------------+------------------+--------------+------------+ +| ``p`` | :c:type:`char[]` | 文字列 | | | ++--------------+--------------------------+------------------+--------------+------------+ +| ``P`` | :c:type:`void \*` | 整数型 | | \(5), \(3) | ++--------------+--------------------------+------------------+--------------+------------+ 注意事項: @@ -223,12 +223,29 @@ .. versionadded:: 2.2 (3) + 整数変換コードで非整数をパックしようとするとき、その非整数が + :meth:`__index__` メソッドを持っていると、パッキングの前に、 + そのメソッドが変数を整数に変換するために呼び出されます。 + :meth:`__index__` メソッドが存在しないか、 :meth:`__index__` メソッドの + 呼び出しが :exc:`TypeError` を送出したら、次に :meth:`__int__` メソッド が + 試されます。しかし、 :meth:`__int__` の使用は非推奨で、 + :exc:`DeprecationWarning` を送出します。 + + .. versionchanged:: 2.7 + 非整数への :meth:`__index__` メソッド の使用は 2.7 で追加されました。 + + .. versionchanged:: 2.7 + バージョン 2.7 以前では、すべての整数変換コードが変換 に :meth:`__int__` + メソッドを使うわけではなく、浮動小数点の引数にのみ + :exc:`DeprecationWarning` が送出されていました。 + +(4) ``'f'`` および ``'d'`` 変換コードについて、 パックされた表現は IEEE 754 binary32 (``'f'`` の場合) または binary64 (``'d'`` の場合) フォーマットが、プラットフォームにおける 浮動小数点数のフォーマットに関係なく使われます。 -(4) +(5) ``'P'`` フォーマット文字はネイティブバイトオーダでのみ利用可能です (デフォルトのネットワークバイトオーダに設定するか、 ``'@'`` バイトオーダ指定文字を指定しなければなりません)。 @@ -250,9 +267,9 @@ 個の空文字列を意味します。 フォーマット文字 ``'p'`` は "Pascal 文字列 (pascal string)" をコードしま す。Pascal -文字列は固定長のバイト列に収められた短い可変長の文字列です。count は実際に 文字列データ中に収められる全体の長さです。このデータの先頭の 1 +文字列は count で与えられる *固定長のバイト列* に収められた短い可変長の文字 列です。このデータの先頭の 1 バイトには文字列の長さか255 のうち、小さい方の数が収められます。その後に文 字列のバイトデータが続きます。 :func:`pack` に渡された -Pascal 文字列の長さが長すぎた (count-1 よりも長い) 場合、先頭の count-1 バ イトが書き込まれます。文字列が count-1 +Pascal 文字列の長さが長すぎた (count-1 よりも長い) 場合、先頭の ``count-1`` バイトが書き込まれます。文字列が ``count-1`` よりも短い場合、指定した count バイトに達するまでの残りの部分はヌルで埋めら れます。 :func:`unpack` では、フォーマット文字 ``'p'`` は指定された count バイトだけデータを読み込みますが、返される文字列は決し て 255 文字を超えることはないので注意してください。 @@ -293,7 +310,7 @@ >>> from collections import namedtuple >>> Student = namedtuple('Student', 'name serialnum school gradelevel') - >>> Student._make(unpack('<10sHHb', s)) + >>> Student._make(unpack('<10sHHb', record)) Student(name='raymond ', serialnum=4658, school=264, gradelevel=8) アラインメントの要求を満たすために必要なパディングが異なるという理由によ り、