以二进制形式连接数字

时间:2017-01-13 18:22:39

标签: python

在Python中转换二进制数时,得到的结果如下:

b = bin(77)
print(b)  # 0b1001101

当我期待01001101时。我猜测b让Python知道这是一个二进制数而不是一个整数。这可以在Python中 ,但如果你想与外界沟通,那么这里的安全做法是什么? 这可能是一个愚蠢的例子,但在线转换器例如无法识别上述二进制文件

简单地删除b总能做到这一点?因为我似乎遇到了试图编码Ascii85编码器/解码器的问题,其中发生了二进制数的连接。您可以查看此示例here

我的代码就是这种情况产生以下内容:

ch = 'Man '
list_ = [ord(x) for x in ch]  # [77, 97, 110, 32]
binary_repr = ''.join(bin(x) for x in list_)  # 0b10011010b11000010b11011100b100000
# When it should be                                01001101011000010110111000100000

请注意,简单地将b替换为什么并不能完全消除它。这可能是一些愚蠢的错误,但有人可以为我清理一下吗?

2 个答案:

答案 0 :(得分:4)

>>> format(b, '08b') 

其中b是您的号码,' 08b'是你要用来表示你的数字的位数,如果参数是#08b而不是08b,你就得到数字前面的0b。

在每个进一步的操作中使用格式,你应该是好的!

答案 1 :(得分:0)

隐而不宣'吨

str(b)[2:] 

做这个工作?

但你可能会做得更好:

"{0:b}".format(77)