经过一段谷歌搜索后,没有任何事情发生。我正在操纵网络数据包的序列号,并且需要数字是固定长度的。例如:
>>> 0000 + 1
1
相反,我希望返回的整数是0001.是否有用于设置固定长度整数的内置命令?
编辑:我不需要打印这些整数,我需要实际操作它们。我将需要它们进行迭代,但它们必须是固定长度的,以便可以在网络协议head
文件中轻松找到它们。
答案 0 :(得分:3)
你提出的问题没有任何意义。整数0011
和整数11
的数字完全相同。*
如果您想将它们格式化为字符串以将其打印出来或搜索文本文件,您可以使用例如format(n, '04')
来执行此操作。您是否格式化11
或0011
并不重要,它们都是相同的数字,并且该数字将格式化为字符串'0011'
。
如果你想将它们转换为big-endian 32位C风格的无符号整数,它们都是相同的数字,而struct.pack('>I', n)
会将该数字打包到字节字符串{{ 1}}。
如果您想以模数10000再添加它们,则它们都是相同的数字,b'\x00\x00\x00\x0b'
会给您(n + 9990) % 10000
。
无论你做什么操作,都没有区别。
*实际上,在Python 2.x中,以1
开头的数字文字被视为八进制,而不是十进制,因此0
实际上是0011
,而不是{{1 }}。并且以9
开头的3.x数字是11
,以避免因意外写入八进制数而导致的混淆。但忘记这一切。我们不是在谈论Python数字文字,我们在这里谈论更简单的事情:数字本身。
答案 1 :(得分:1)
数字不具有"长度",它们只是数字。数字表示为字符串的文本具有长度。要在Python中将数字转换为字符串,请使用format()
函数:
x = 1
s = "{:04d}".format(x)
print(s)