我正在使用 Python 3.2.2。
我正在寻找一个将二进制字符串(例如“0b1010”或“1010”)转换为二进制文字的函数,例如 0b1010(不是字符串或十进制整数文字)。
自己动手是一件容易的事,但我更喜欢使用标准功能或成熟的功能:我不想“重新发明轮子”。
无论如何,我很高兴看到你们可能拥有的任何有效算法。
我正在使用 Python 3.2.2。
我正在寻找一个将二进制字符串(例如“0b1010”或“1010”)转换为二进制文字的函数,例如 0b1010(不是字符串或十进制整数文字)。
自己动手是一件容易的事,但我更喜欢使用标准功能或成熟的功能:我不想“重新发明轮子”。
无论如何,我很高兴看到你们可能拥有的任何有效算法。
字符串是文字。
3>> bin(int('0b1010', 2))
'0b1010'
3>> bin(int('1010', 2))
'0b1010'
3>> 0b1010
10
3>> int('0b1010', 2)
10
试试下面的代码:
#!python3
def fn(s, base=10):
prefix = s[0:2]
if prefix == '0x':
base = 16
elif prefix == '0b':
base = 2
return bin(int(s, base))
print(fn('15'))
print(fn('0xF'))
print(fn('0b1111'))
如果你确定你有s = "'0b010111'"
并且你只想得到010111
,那么你可以像这样切中间:
s = s[2:-1]
即从索引2到最后一个。
但正如伊格纳西奥和安蒂所写,数字是抽象的。这0b11
是数字 3 的字符串表示之一,与数字 3 的3
另一个字符串表示相同。
repr()
总是返回一个字符串。唯一可以对repr
结果做的事情就是去掉撇号——因为repr
将撇号添加到字符串表示以强调它是字符串表示。如果您想要数字的二进制表示(作为没有撇号的字符串),那么bin()
这是最终的答案。