<p>我试图实现一个更大的密码问题,我遇到了一个问题,我不太明白,当采取最有意义的字节(不是位)。</p>
<p>要将int转换为我正在使用的字节,请执行以下操作:</p>
<pre><code>def binary(i):
if i == 0:
return "0"
s = ''
while i:
if i & 1 == 1:
s = "1" + s
else:
s = "0" + s
i >>= 1
return s
</code></pre>
<p>我很确定以上是正确的,它与我的测试数字。然后提取我使用的最有意义的字节:</p>
<pre><code>def msb(i):
a = binary(i)
b = a[0:7]
c = int(b,2)
return c
</code></pre>
<p>然而,这似乎是我预期的一半。我是不是错误地认为只取前8位就可以得到最有意义的字节,还是我遗漏了一些愚蠢的东西?</p>
<p>示例代码只获取前导位,而不是8:</p>
<pre><code>def msb(i):
a = binary(i)
b = a[0:7] # gets first SEVEN characters of string a
c = int(b,2)
return c
</code></pre>
<p>将其更改为<code>a[0:8]</code>以提取8个前导字符/位,而不是7个。</p>