在 Python 中将整数转换为二进制

2025-01-21 09:01:00
admin
原创
69
摘要:问题描述:为了将整数转换为二进制,我使用了以下代码:>>> bin(6) '0b110' 而何时删除‘0b’,我使用这个:>>> bin(6)[2:] '110' 如果我想显示6为00000110而不是 ,我该怎么办110?解决方案 1:>>> '{0:0...

问题描述:

为了将整数转换为二进制,我使用了以下代码:

>>> bin(6)
'0b110'

而何时删除‘0b’,我使用这个:

>>> bin(6)[2:]
'110'

如果我想显示600000110而不是 ,我该怎么办110


解决方案 1:

>>> '{0:08b}'.format(6)
'00000110'

仅解释格式字符串的各个部分:

  • {}将变量放入字符串中

  • 0取参数位置 0 处的变量

  • :为此变量添加格式选项(否则它将表示十进制6

  • 08将数字格式化为八位数字,左侧用零填充

  • b将数字转换为二进制表示

如果您使用的是 Python 3.6 或更高版本,您也可以使用 f 字符串:

>>> f'{6:08b}'
'00000110'

解决方案 2:

另一个想法:

>>> bin(6)[2:].zfill(8)
'00000110'

通过字符串插值的更短方法(Python 3.6+):

>>> f'{6:08b}'
'00000110'

解决方案 3:

只需使用格式功能

format(6, "08b")

一般形式为

format(<the_integer>, "<0><width_of_string><format_specifier>")

解决方案 4:

有点玩弄的方法...

>>> bin8 = lambda x : ''.join(reversed( [str((x >> i) & 1) for i in range(8)] ) )
>>> bin8(6)
'00000110'
>>> bin8(-3)
'11111101'

解决方案 5:

eumiro 的答案更好,但我只是为了多样性而发布这个:

>>> "%08d" % int(bin(6)[2:])
00000110

解决方案 6:

numpy.binary_repr(num, width=None)有一个神奇的宽度参数

上面链接的文档中的相关示例:

>>> np.binary_repr(3, width=4)
'0011'

当输入数为负数且指定宽度时,返回二进制补码:

>>> np.binary_repr(-3, width=5)
'11101'

解决方案 7:

最好的方法是指定格式。

format(a, 'b')

以字符串格式返回 a 的二进制值。

要将二进制字符串转换回整数,请使用 int() 函数。

int('110', 2)

返回二进制字符串的整数值。

解决方案 8:

..或者如果您不确定它是否应该始终是 8 位数字,您可以将其作为参数传递:

>>> '%0*d' % (8, int(bin(6)[2:]))
'00000110'

解决方案 9:

走老路总是有效的

def intoBinary(number):
binarynumber=""
if (number!=0):
    while (number>=1):
        if (number %2==0):
            binarynumber=binarynumber+"0"
            number=number/2
        else:
            binarynumber=binarynumber+"1"
            number=(number-1)/2

else:
    binarynumber="0"

return "".join(reversed(binarynumber))

解决方案 10:

还有更简单的方法:

my_num = 6
print(f'{my_num:b}')

解决方案 11:

您可以使用:

"{0:b}".format(n)

我认为这是最简单的方法!

解决方案 12:

假设您想要解析用于表示不总是恒定的变量的数字,一个好方法是使用numpy.binary。

当你将二进制应用于幂集时可能会很有用

import numpy as np
np.binary_repr(6, width=8)

解决方案 13:

('0' * 7 + bin(6)[2:])[-8:]

或者

right_side = bin(6)[2:]
'0' * ( 8 - len( right_side )) + right_side

解决方案 14:

def int_to_bin(num, fill):
    bin_result = ''

    def int_to_binary(number):
        nonlocal bin_result
        if number > 1:
            int_to_binary(number // 2)
        bin_result = bin_result + str(number % 2)

    int_to_binary(num)
    return bin_result.zfill(fill)

解决方案 15:

带有递归的简单代码:

 def bin(n,number=('')):
   if n==0:
     return(number)
   else:
     number=str(n%2)+number
     n=n//2
     return bin(n,number)

解决方案 16:

Python 包Binary Fractions具有二进制和二进制分数的完整实现。您可以按如下方式执行操作:

from binary_fractions import Binary
b = Binary(6) # Creates a binary fraction string
b.lfill(8) # Fills to length 8

这个包有许多其他方法可以全精度操作二进制字符串。

解决方案 17:

    def convertToBinary(self, n):
        result=""
        if n==0:
            return 0

        while n>0:
            r=n%2
            result+=str(r)
            n=int(n/2)
        if n%2==0:
            result+="0"
        return result[::-1]
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用