如何在python中绕过base-8号码识别?

时间:2016-03-24 16:52:08

标签: python python-2.7

我正在做一个练习,我在网上看到一些操作二进制序列(例如每一个交换一个零,每一个零换一个),在代码中的某个点,我想像这样打印0101:< / p>

seq = 0101
print seq

输出是65而不是0101,我发现这是因为整数开始时的0表示基数为8的数字,我该如何绕过这个?

3 个答案:

答案 0 :(得分:1)

您应该使用字符串"0101"或使用二进制0b0101 字符串将打印0101,二进制文件将打印它代表的二进制数字(5)。

答案 1 :(得分:1)

Python具有二进制文字,但您需要在其前面添加0b。所以你的例子应该是这样的:

> seq = 0b0101
> print seq
5

您还可以打印二进制文件:

> print bin(seq)
0b101

答案 2 :(得分:1)

你做不到。当你输入0101时,它会自动转换为oct(101)的值。您可以将其保存为二进制文件:

seq = 0b101

但是这并没有保持领先0.你最好的选择是将它保存为字符串。

seq = "0101"
swapped = ''.join(['1' if b in '0' else '0' for b in seq]) # or maketrans
print(swapped)  # => 1010
print(int(swapped, 2))  # => 10