在Python中设置固定长度整数

1 投票
2 回答
8779 浏览
提问于 2025-05-01 16:55

经过一番搜索,我没有找到相关的信息。我正在处理网络数据包的序列号,需要这些序列号是固定长度的。比如说:

>>> 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,这是为了避免意外写成八进制数字造成的混淆。但这些都不重要。我们现在讨论的只是数字本身,更简单。

撰写回答