擅长:python、mysql、java
<p>是的。使用以16为基数的int()。在</p>
<pre><code>>>> int('ffffffff',16)
4294967295L
</code></pre>
<p>所以:</p>
^{pr2}$
<p>应该做同样的事情而不需要评估。在</p>
<p><strong>[Edit]</strong>事实上,如果给定一个整数,通常根本没有理由需要转换为字符串表示形式—您可以简单地通过与<code>0xffffffff</code>进行and运算,然后在循环中将密钥右移32位,从而提取出每个32位的值。例如:</p>
<pre><code>subkeys = []
while key:
subkeys.append(key & 0xffffffff)
key >>= 32
if not subkeys: subkeys = [0] # Handle 0 case
subkeys.reverse() # Use same order as before (BUT SEE BELOW)
</code></pre>
<p>但是,这个初始化过程似乎有点奇怪-它使用从左边开始的十六进制数字,没有零填充来舍入为8个十六进制数字的倍数(因此,<code>0x123456789</code>将被拆分为<code>0x12345678</code>和{<cd4>},而不是更常用的<code>0x00000001</code>和{<cd6>}。它也重复这些数字,而不是把它当作一个单一的大数字。您应该检查此代码是否实际执行了正确的算法。在</p>