我正在尝试实现一个较大的密码问题,但在处理最高有效字节(而不是位)时遇到了一个问题,我不太理解。
将int转换为byte,我使用以下代码:
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
我非常确信以上内容是正确的,这适用于我的测试数字。要提取最高有效字节,我使用以下代码:
def msb(i):
a = binary(i)
b = a[0:7]
c = int(b,2)
return c
然而,这似乎只返回了我期望值的一半。我是不是错以为通过只取前8位就可以得到最高有效字节了,还是我漏掉了其他什么愚蠢的东西?