将整数转换为二进制,需要删除前导零

时间:2017-01-24 23:12:26

标签: python binary

我编写了一个程序,在不使用bin()的情况下将整数转换为二进制。但是,执行时,此函数会添加前导零。

def decimalToBinary(n):
    def helper(n):
        if n == 0:
            return '0'
        else:
            if n%2 == 1:
                binaryDigit = '1'
            else:
                binaryDigit = '0'
            return helper(n//2) + binaryDigit

    helper(n)
    print(helper(n))

输出:

>>> decimalToBinary(100)
01100100

如何更改此设置,以便在输入100时输出为1100100,而不是01100100

4 个答案:

答案 0 :(得分:0)

我的建议是

 print(str(helper(n)).lstrip("0"))

 print(str(helper(n))[1:])

除非helper(n)已经返回一个字符串,在这种情况下,请删除示例中的str()。

答案 1 :(得分:0)

使用某种修剪功能。

我相信python你会发现类似的东西:

 trimStart("0") // example from C#

这是一种原始方法,但肯定会起作用:)

答案 2 :(得分:0)

if n == 0: return ""中使用空字符串跳过此零。

只有0需要“前导零”,因此您必须使用额外的if来识别此值并返回0

def decimalToBinary(n):

    def helper(n):
        if n == 0:
            return '' # <- empty string
        else:
            if n%2 == 1:
                binaryDigit = '1'
            else:
                binaryDigit = '0'
            return helper(n//2) + binaryDigit

    if n == 0:
        result = '0' # <- "leading zero" only for `n == 0`
    else:
        result = helper(n)
    print(result)

# --- test ---

for x in range(16):
    decimalToBinary(x)

答案 3 :(得分:-2)

我很久以前在远处的一个星系中找到的东西:

n = 100
b = ''
while n > 0:
    b = str(n % 2) + b
    n >>= 1
print(b)    # 1100100