擅长:python、mysql、java
<p><a href="http://docs.python.org/2/library/struct.html" rel="nofollow">^{<cd1>} module</a>:</p>
<blockquote>
<p>… performs conversions between Python values and C structs represented as Python strings. </p>
</blockquote>
<p>因为C没有无限长的整数,所以没有打包它们的功能。</p>
<p>但你自己写起来很容易。例如:</p>
<pre><code>def pack_bigint(i):
b = bytearray()
while i:
b.append(i & 0xFF)
i >>= 8
return b
</code></pre>
<p>或:</p>
<pre><code>def pack_bigint(i):
bl = (i.bit_length() + 7) // 8
fmt = '<{}B'.format(bl)
# ...
</code></pre>
<p>等等。</p>
<p>当然,您还需要一个<code>unpack</code>函数,就像jbatista的注释:</p>
<pre><code>def unpack_bigint(b):
b = bytearray(b) # in case you're passing in a bytes/str
return sum((1 << (bi*8)) * bb for (bi, bb) in enumerate(b))
</code></pre>