在python中设置固定长度整数

时间:2014-11-05 00:27:24

标签: python int primitive

经过一段谷歌搜索后,没有任何事情发生。我正在操纵网络数据包的序列号,并且需要数字是固定长度的。例如:

>>> 0000 + 1
1

相反,我希望返回的整数是0001.是否有用于设置固定长度整数的内置命令?

编辑:我不需要打印这些整数,我需要实际操作它们。我将需要它们进行迭代,但它们必须是固定长度的,以便可以在网络协议head文件中轻松找到它们。

2 个答案:

答案 0 :(得分:3)

你提出的问题没有任何意义。整数0011和整数11的数字完全相同。*

如果您想将它们格式化为字符串以将其打印出来或搜索文本文件,您可以使用例如format(n, '04')来执行此操作。您是否格式化110011并不重要,它们都是相同的数字,并且该数字将格式化为字符串'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)