擅长:python、mysql、java
<p>即使在错误行指向此行时,错误也不在此处。在Python解释器中执行此指令不会产生错误:</p>
<pre><code>import struct
struct.pack("!H", 0)
>>> '\x00\x00'
</code></pre>
<p>这是有意义的,因为错误正在“L”格式代码上抱怨,所以错误将位于使用此格式的代码中。</p>
<p>假设“L”用于无符号long,并且消息抱怨超出范围,则错误是因为使用的一个(或多个)变量为负,从而产生无符号long的超出范围。</p>
<p>这可以在Python解释器中验证:</p>
<pre><code>import struct
struct.pack("!HHHLL", 1, 2, 3, 4, 5)
>>> '\x00\x01\x00\x02\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05'
struct.pack("!HHHLL", 1, 2, 3, -4, 5)
>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
struct.error: integer out of range for 'L' format code
</code></pre>