当number大于位数时,在python中将数字格式化为固定长度二进制

时间:2017-10-31 19:02:50

标签: python string binary formatting

我正在尝试将数字转换为具有固定长度的二进制表示。我尝试过使用

>>> "{0:04b}".format(number)

当数字可以用四位(0-15)完全表示时有效,但是我需要字符串总是四位长,即使数字超出范围。例如,

>>> "{0:04b}".format(17)

应该返回'0001',而不是'10001'。

我知道我可以索引结果字符串的最后4位,但是我想知道是否有更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

没有通用的方法来限制整数转换的宽度。但是,您可能希望针对特定情况使用特定方法。

如果您不希望在生成字符串后减少字符串,则可以减少输入数字。由于您只对低位四位感兴趣,& 0xf应该为您隔离这些位:

"{0:04b}".format(number & 0xF)

或者,您可以调用format两次,一次转换整数,一次限制结果字符串的字段宽度。这是相当难以理解的,所以我不推荐它:

"{0:4.4s}".format("{0:04b}".format(number))