在Python中设置固定长度整数
经过一番搜索,我没有找到相关的信息。我正在处理网络数据包的序列号,需要这些序列号是固定长度的。比如说:
>>> 0000 + 1
1
我希望返回的整数是 0001。有没有什么内置的命令可以设置一个固定长度的整数呢?
补充说明:我并不是要打印这些整数,而是需要实际操作它们。我需要这些整数可以进行迭代,但它们必须是固定长度的,这样才能在网络协议的 head
文件中容易找到。
2 个回答
2
数字本身没有“长度”,它们就是数字。把数字用文字表示出来,也就是放在字符串里,这个字符串才有长度。在Python中,如果你想把数字转换成字符串,可以使用 format()
函数:
x = 1
s = "{:04d}".format(x)
print(s)
5
你问的问题其实没有什么意义。整数 0011
和整数 11
是完全一样的数字。
如果你想把它们格式化成字符串来打印或者搜索文本文件,可以用比如 format(n, '04')
这样的方式。无论你格式化的是 11
还是 0011
,它们都是同一个数字,格式化后都会变成字符串 '0011'
。
如果你想把它们转换成大端32位C风格的无符号整数,它们依然是同一个数字,使用 struct.pack('>I', n)
会把这个数字打包成字节串 b'\x00\x00\x00\x0b'
。
如果你想把它们相加然后对10000取模,结果也是一样的,(n + 9990) % 10000
会得到 1
。
无论你想进行什么操作,结果都不会有区别。
* 实际上,在Python 2.x中,以 0
开头的数字会被当作八进制处理,所以 0011
实际上是 9
,而不是 11
。在3.x中,以 0
开头的数字会导致 SyntaxError
,这是为了避免意外写成八进制数字造成的混淆。但这些都不重要。我们现在讨论的只是数字本身,更简单。