2014-11-05 544 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數字文字,我們在這裏談論更簡單的事情:數字本身。