2014-11-05 71 views
-1

经过一番搜索后,没有出现。我正在操纵网络数据包的序列号,并且需要这些数字的长度是固定的。例如:在Python中设置固定长度的整数

>>> 0000 + 1 
1 

而是,我想返回的整数是0001.是否有任何内置命令设置固定长度的整数?

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

+0

0在一个数字的开头意味着八进制python – 2014-11-05 00:28:57

+0

http://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-string – 2014-11-05 00:30:36

+0

@CB,这是怎么回事做出改变? – 2014-11-05 00:32:05

回答

1

数字没有“长度”,它们只是数字。以字符串形式表示的数字具有一定的长度。将数字转换为字符串在Python,使用format()功能:

x = 1 
s = "{:04d}".format(x) 
print(s) 
+0

正如您的文本所说,使用'format'函数比'str.format'方法更简单,就像您的示例代码所做的那样。 – abarnert 2014-11-05 01:02:24

3

什么你问没有任何意义。整数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。并且在以0开头的3.x号码中为SyntaxError,以避免意外地写入八进制数字引起的混淆。但忘记所有这一切。我们不是在谈论Python数字文字,我们在这里谈论更简单的事情:数字本身。