我正在做一个练习,我在网上看到一些操作二进制序列(例如每一个交换一个零,每一个零换一个),在代码中的某个点,我想像这样打印0101:< / p>
seq = 0101
print seq
输出是65而不是0101,我发现这是因为整数开始时的0表示基数为8的数字,我该如何绕过这个?
答案 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