【发布时间】:2017-01-13 18:22:39
【问题描述】:
在 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 并不能完全消除它。这可能是一些愚蠢的错误,但有人可以为我解决问题吗?
【问题讨论】:
-
不,修剪前两个字符就可以了。
-
@ŁukaszRogalski 但修剪前 2 个字符会产生 7 位数字。怎么可能?
-
@Ev.Kounis
bin不关心字节,它只生成代表数字的最短位串。bin(1) -> 0b1Some history of0b -
@PatrickHaugh 我明白了。谢谢大家!
标签: python