擅长:python、mysql、java
<p>如果使用两个4字节的无符号long long(<code>NN</code>格式,在PHP中)解压8字节无符号long long,那么可以对第一个long 32位进行位移位,并将其添加到第二个long中,以恢复8字节的无符号long long。在Python中</p>
<pre><code>In [49]: import struct
In [50]: c = 12345678912345678912
In [51]: struct.pack('!Q', c) # this is the packed string
Out[51]: '\xabT\xa9\x8f\x81e$@'
# unpack the string using `NN` in PHP
In [52]: a, b = struct.unpack('!LL', struct.pack('!Q', c))
In [53]: a, b
Out[53]: (2874452367L, 2170889280L)
</code></pre>
<p>该位将第一个数字移位32位,然后将其与第二个数字相加。在</p>
^{pr2}$
<p>这表明原始号码<code>c</code>已恢复:</p>
<pre><code>In [55]: assert (a<<32)+b == c
</code></pre>