当前位置: 首页 > 知识库问答 >
问题:

转换为二进制并保留前导零

王凌
2023-03-14

我正在尝试使用Python中的bin()函数将整数转换为二进制。但是,它总是删除前导零,这是我实际需要的,因此结果总是8位:

例子:

bin(1) -> 0b1

# What I would like:
bin(1) -> 0b00000001

有办法做到这一点吗?

共有3个答案

西门智
2023-03-14

我正在使用

bin(1)[2:].zfill(8)

将打印

'00000001'
楚煜
2023-03-14
>>> '{:08b}'.format(1)
'00000001'

请参阅:格式规范小型语言

注意:对于Python2.6或更早版本,您不能在之前省略位置参数标识符,因此请使用

>>> '{0:08b}'.format(1)
'00000001'      
武嘉祥
2023-03-14

使用格式()函数:

>>> format(14, '#010b')
'0b00001110'

格式化()函数简单地按照格式规范迷你语言格式化输入。#使格式包括0b前缀,并且010大小将输出格式设置为适合10个字符的宽度,并使用0填充;0b前缀的2个字符,另一个8代表二进制数字。

这是最简洁、最直接的选择。

如果要将结果放入较大的字符串中,请使用格式化字符串文字(3.6)或使用str.format(),并将format()函数的第二个参数置于占位符{:}的冒号之后

>>> value = 14
>>> f'The produced output, in binary, is: {value:#010b}'
'The produced output, in binary, is: 0b00001110'
>>> 'The produced output, in binary, is: {:#010b}'.format(value)
'The produced output, in binary, is: 0b00001110'

事实上,即使只是格式化单个值(因此不将结果放入较大的字符串中),使用格式化字符串文字也比使用format()

>>> import timeit
>>> timeit.timeit("f_(v, '#010b')", "v = 14; f_ = format")  # use a local for performance
0.40298633499332936
>>> timeit.timeit("f'{v:#010b}'", "v = 14")
0.2850222919951193

但我只会在紧密循环中的性能很重要时使用它,如格式(…) 可以更好地传达意图。

如果不需要0b前缀,只需删除#并调整字段长度:

>>> format(14, '08b')
'00001110'

 类似资料:
  • 我想做的是将用户输入的任何高达2^32-1的数字转换为仅使用位运算符的二进制值。经过多次挠头和修补,我得出了这个结论,似乎给了我想要的...几乎: 现在我的问题是:这确实会输出正确的二进制字符串,但我需要删除前导零,以便十进制数10在二进制中显示为1010,而不是0000000000000000000000 1010。 我是第一学期的计算机科学专业的学生,所以任何关于解决问题的帮助或清理代码的提示

  • 编者按:此代码示例来自Rust 1.0之前的版本,并且在语法上是无效的Rust 1.0代码。此代码的更新版本会产生不同的错误,但答案仍然包含有价值的信息。 肯定有更好的方法将二进制字符串转换为十六进制字符串比这? 这样做的结果是 我用的是Rustc0.12。夜间

  • 我如何将一个写为二进制的字符串转换为二进制(字节数组)? 如果我有一个字符串: 下面是当我将二进制设置为字节数组时发生的情况(字节数组返回48,这是ASCII) 我不擅长解释,所以希望上面的例子足以告诉你我想要什么。

  • 我正在尝试将数字从十进制值转换为其IEEE 752形式。例如: 我写了这个方法: 有个问题我解决不了,我再举个例子说清楚。 但是当数字为负数时,例如 我收到以下错误: 这意味着我的代码可以完美地处理正数(包括零),但如果是负数,代码就会崩溃。问题出在哪里? 笔记 我想我可以用这种方式解决我的问题 检查是否有一个字符At(0)等于1 如果是(numero.charAt(0)==1),则删除第一个字符

  • 本文向大家介绍如何将八进制转换为二进制?,包括了如何将八进制转换为二进制?的使用技巧和注意事项,需要的朋友参考一下 八进制数是基数为8的数字系统之一,这意味着只有8个符号−0、1、2、3、4、5、6和7。而二进制数是数字系统、网络和计算机专业人员最熟悉的数字系统。基2只有2个符号−0和1,这些数字可以分别用off和on表示。 从八进制转换为二进制数制 将八进制数转换成二进制数有多种直接或间接的方法

  • 本文向大家介绍十进制到二进制转换,包括了十进制到二进制转换的使用技巧和注意事项,需要的朋友参考一下 十进制数字也可以转换为二进制格式。要将十进制数转换为二进制数,我们需要将数字除以2,直到达到0或1。然后,在每一步骤中,其余部分将分开存储以形成相反的二进制等效数。 在此算法中,我们将遵循递归方法。这将帮助我们在不使用堆栈数据结构的情况下解决问题。在实现中,我们知道函数的递归将遵循内部堆栈。我们将使