Python:从二进制数中删除字符串引号

时间:2013-05-23 15:21:12

标签: python python-2.7

所以我有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()转换每次都会发生。并不是说这是一个严重的性能问题。

5 个答案:

答案 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所提及的那样

编辑,您可以使用mapformat函数(格式化为'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::])