所以我有t = 111
bin(1111)
Out[105]: '0b10001010111'
和
g = bin(111)
g
Out[16]: '0b1101111'
我的问题是,是否可以删除引号。我担心对它进行算术运算。
像迭代中的g = g -0b1等。
更新
我只是想要例如,g = bin(111)[2:]在qoutations中是1101111而不是'1101111'。
无论如何做了一个非常简单的解决方法,而是接收二进制数并对其进行操作。
length = len(string) #what is the len of this string
t = startrange #Equivalent to binary string, i.e. for 111 it is 7
for i in range(int(startrange)):
t -= 1
l=tuple((bin(t)[2:].zfill(length)))
PS:但是在迭代中bin()转换每次都会发生。并不是说这是一个严重的性能问题。
答案 0 :(得分:3)
如果要将数字转换为字符串,请仅使用bin
。
任何整数都已经是计算机内的位,不需要“转换”它就可以执行任何算术运算。
使用整数值进行任何计算,并将结果转换为仅输出所需的格式。
答案 1 :(得分:2)
你所要求的和/或你正在做的事情没有多大意义。 bin
函数返回一个字符串,所以它总是“有”引号。如果你想对数字进行算术运算,你只需要将它作为一个数字(在调用bin
之前你已经有权访问它)。完成计算后,您可以使用bin
将结果格式化为二进制格式。
除非,您试图手动进行二进制计算,机器通常会为您做。然后你可以做这样的事情:
number = 111
bits = [int(b) for b in bin(number)[2:]] # get a list of "bits"
print(bits) # Prints [1, 1, 0, 1, 1, 1, 1]
然后你可以手动进行位操作,我想。
如Jon Clements所提及的那样 编辑,您可以使用map
和format
函数(格式化为'b'
二进制格式更干净一点) spec)而不是您正在使用的bin
函数:
number = 111
bits = map(int, format(number, 'b')) # get a list of "bits"
print(bits) # Prints [1, 1, 0, 1, 1, 1, 1]
答案 2 :(得分:0)
只需打印出来:
>>> print bin(1111)
0b10001010111
你实际上并没有引号,只是你的python“shell”将它们附加到输出中以“帮助”你
答案 3 :(得分:0)
如果您必须转到二进制字符串,然后使用它进行计算,只需:
binary_string = bin(111)
num_to_calc_with = int(binary_string, base=2)
答案 4 :(得分:-1)
正如人们所说,你根本不需要这样做,但如果你想要的话,以下内容会给你二进制数作为整数:
int(bin(111)[2::])