我试图实现一个更大的密码问题,我遇到了一个问题,我不太明白,当采取最有意义的字节(不是位)。
要将int转换为我正在使用的字节,请执行以下操作:
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位就可以得到最有意义的字节,还是我遗漏了一些愚蠢的东西?
示例代码只获取前导位,而不是8:
将其更改为
a[0:8]
以提取8个前导字符/位,而不是7个。有很多简单的方法可以做到这一点。例如,如果需要前八位(忽略字节对齐),可以执行以下操作:
对于最重要的对齐字节,在Python 3中可以执行以下操作:
在Py2中,必须转换为十六进制字符串并返回以匹配
to_bytes
方法。字节是
0xFF
您可以通过执行如果你想让最右边的字节更容易,我总是感到最重要和最不重要的混淆
我想这至少是对的。。。我不确定是否能保证返回字节数。。。
根据你的例子,我认为第二个代码就是你想要的
你也可以做些类似的事情
相关问题 更多 >
编程相关推荐