def get_bin_string(number, width):
# f"{number:{width}b}" is the number in binary format with a minimum of "width" bits
# len(...) is the actual width of the number in case "width" is too small
# ...-1 is to correct a one-off error
# .../4 is to get the number of underscores we'll need
# int(...) is to round down to an integer value
num_underscores = int((len(f"{number:{width}b}")-1)/4)
# get the final string we want now including the underscores
# The '0' to the right of the "":" is to pad the extra bits with 0
return f"{number:0{width + num_underscores}_b}"
num = 18
width = 17
print(get_bin_string(num, width))
width = 18
print(get_bin_string(num, width))
4条答案
按热度按时间gorkyyrv1#
使用Python的格式规范迷你语言good'ol pal
rbpvctlc2#
一种方法:
输出:
hgb9j2n63#
您需要将_添加到格式字符串中,而且您不需要使用zfill - 017_b格式,最小长度为17个字符,零填充空格,并在中间使用_。
给予
还请注意,在二进制模式下,下划线始终是每4位数字,因为你需要那里。更多
yqkkidmi4#
使用f字符串应该可以做到这一点,但请注意这里的 * width * 文档:
(着重号是我的)
所以你需要修改"width"变量,使其等于你期望字符串中下划线的个数,让我们看看同一页中的下划线文档:
'_'
选项表示浮点表示类型和整数表示类型'd'
的千位分隔符使用下划线。对于整数表示类型'b'
、'o'
、'x'
和'X'
,将每4位插入下划线。因此,对于我们希望在最终字符串中看到的每个下划线,我们需要将"width"增加一个字符。
我的解决方案是:
输出: