【问题标题】:Converting Decimal to Binary, how to get 8-bit binary?将十进制转换为二进制,如何获得 8 位二进制?
【发布时间】:2019-09-09 06:27:51
【问题描述】:

所以我需要将十进制转换为二进制,但我的所有返回都需要 8 位长。

我已经弄清楚了转换本身,但如果它小于 8 位,我需要弄清楚如何在开头添加零。

old_number = int(input("Enter whole number here: "))
number = old_number
binary_translation = 0

while number > -1:
    if number > 128 or number == 128:
        binary_translation = binary_translation + 10000000
        number = number - 128
    elif number > 64 or number == 64:
        binary_translation = binary_translation + 1000000
        number = number - 64
    elif number > 32 or number == 32:
        binary_translation = binary_translation + 100000
        number = number - 32

一直等到零……

print("The number", old_number, "is", binary_translation, "in binary.")

如果 number = 39 我想要的结果 - 00100111

如果 number = 39 - 100111,我会得到结果

【问题讨论】:

  • 您可以使用 zfill 函数:str(100111).zfill(8) 或字符串格式:'{:0>8}'.format(100111)。查看this question 的答案。

标签: python binary decimal


【解决方案1】:

TLDR:使用它:'{:0>8}'.format(str(bin(a))[2:])


您进行了不必要的二进制转换。 Python 有内置函数bin() 可以为你做这件事:

>>> number = 39
>>> bin(number) 

'0b100111'

你可以裁剪它:

>>> str(bin(number))[2:]

'100111'

并添加前向零:

>>> '{:0>8}'.format(str(bin(a))[2:])

'00100111'

这是给你的最后一条:'{:0>8}'.format(str(bin(a))[2:])

如果你想了解更多这方面的内容:'{:0>8}'magic,可以阅读this 文章。

【讨论】:

    【解决方案2】:

    我写了一个JS函数

    function getBinary(input) {
    
        if (input > 255) {
            return "fu";
        }
    
        //reverse func
        function reverse(s){
            return s.split("").reverse().join("");
        }
    
        //variable definition
        var rest;
        var temp = 1;
        var str="";
        var zeroeslength;
    
        //magic
        while (temp > 0) {
        temp = Math.floor(input / 2);
        rest = input - (temp * 2);
        input = temp;
        str = str + rest;
        }
        str = reverse(str);
    
        //check length
        zeroeslength = 8 - str.length;
    
        //if length < 8 : add zeroes
        while (zeroeslength > 0) {
            str = 0 + str;
            zeroeslength--;
        }
        
        //output
        return str;
    }

    【讨论】:

    • 欢迎来到 Stack Overflow,注意 OP 将他的问题标记为 Python。请不要发布与 OP 标记或要求的语言不同的答案。特别标记的问题中的混合答案使其他人很难找到他们正在寻找的答案。
    猜你喜欢
    • 2018-06-24
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    相关资源
    最近更新 更多