擅长:python、mysql、java
<p>从<a href="https://docs.python.org/2/library/struct.html#byte-order-size-and-alignment">docs</a></p>
<blockquote>
<p>Padding is only automatically added between successive structure members. No padding is added at the beginning or the end of the encoded struct.</p>
</blockquote>
<p>如果你测试</p>
<pre><code>>>> import struct
>>> s1 = struct.Struct('B')
>>> print s1.size
1
>>> s1 = struct.Struct('f')
>>> print s1.size
4
</code></pre>
<p>所以当你添加它是<code>25</code>。。。但另一方面,<code>B</code>是1,其余的是{<cd3>},所以它将被填充成{<cd3>},因此答案是{<cd5>}
考虑这个例子</p>
^{pr2}$
<p>这里的<code>B</code>是<code>1</code>,加了<code>3</code>,而{<cd9>}是{<cd3>},所以最后得到了{<cd11>},这与预期一致。在</p>
<p>如前所述,<a href="https://docs.python.org/2/library/struct.html#byte-order-size-and-alignment">here</a>要重写它,必须使用非本机方法</p>
<pre><code>>>> s1 = struct.Struct('!Bf')
>>> print s1.size
5
</code></pre>
<blockquote>
<p>No padding is added when using non-native size and alignment, e.g. with ‘<’, ‘>’, ‘=’, and ‘!’.</p>
</blockquote>