我已经有了一个算法可以做到这一点,但是代码很丑陋而且很慢.我假设libs中有一个内置函数或一些函数可以提供更快,更精确的结果.
我想要的是我可以给出最终位数,字符串,列表或双端队列(最后可以转换为字符串的任何内容).
func(totalBits, binaryInStringOrListForm) -> String or List with leading zeroes
Run Code Online (Sandbox Code Playgroud)
我已经得到的代码如下:
val = deque(["1", "0"])
while len(val) < 8:
val.appendleft("0")
Run Code Online (Sandbox Code Playgroud)
顺便说一下,deque是一种来自集合的对象,允许您在leftappend其中将项目添加到列表的开头,而不必将所有内容都移动一个.
对此有旧的答案,但它们都是Python 2,整个格式化的事情发生了重大变化.
编辑:我认为这个问题并不是链接的重复,因为我实际上在领导零之后,正如@Martijn Pieters让我意识到的那样.
编辑:好吧,它似乎是那个副本.抱歉欺骗.
我最后编辑:我只是注意到了一些事情.在尝试使其长达一个字节时,我不断获得像000b0110这样的值.这与我想要的00000110相反.我只是添加这个,以便如果将来有人查找这个问题,他们会找到正确的东西.所以我所做的就是使用以下方法忽略字符串的前两个字符:
val = val[2::].rjust(8, '0')
Run Code Online (Sandbox Code Playgroud)
我得到这个是因为我正在用一个带有"bin"的二进制数来转换一个数字,它返回一个字符串,该字符串在开头有一个"0b"(声明为二进制).
Mar*_*ers 11
有一种内置的str.ljust()方法.它采用目标宽度和可选填充字符(默认为空格).您可以使用它来填充带有'0'字符的字符串:
val = val.ljust(8, '0')
Run Code Online (Sandbox Code Playgroud)
还有一种在左侧添加填充的等效str.rjust()方法.
但是,如果你想要前导零(而不是尾随),我会使用该str.zfill()方法,因为它考虑任何-或+前缀.
| 归档时间: |
|
| 查看次数: |
3556 次 |
| 最近记录: |