2013-05-15 45 views
0

我有一個變量持有x長度數,實時我不知道x。我只是想把這個值分成兩部分。例如;如何劃分整數,並採取一些部分

variable holds a = 01029108219821082904444333322221111 
    I just want to take last 16 integers as a new number, like 
       b = 0 # initialization 
       b = doSomeOp (a) 
       b = 4444333322221111 # new value of b 

如何分割整數?

回答

8
>>> a = 1029108219821082904444333322221111 
>>> a % 10**16 
4444333322221111 

,或者使用字符串操作:

>>> int(str(a)[-16:]) 
4444333322221111 

如果你不事先知道該數量的 「長度」,你可以計算出它:

>>> import math 
>>> a % 10 ** int(math.log10(a)/2) 
4444333322221111 
>>> int(str(a)[-int(math.log10(a)/2):]) 
4444333322221111 

而且,當然,對於號碼的「另一半」,它的號碼是

>>> a // 10 ** int(math.log10(a)/2) # Use a single/with Python 2 
102910821982108290 

編輯:

如果您的實際問題是「我怎樣才能把一個了一半」,那麼它的

>>> a = "\x00*\x10\x01\x00\x13\xa2\[email protected]\xfd\x15\xff\xfe\x00\x000013A200402D5DF9" 
>>> half = len(a)//2 
>>> front, back = a[:half], a[half:] 
>>> front 
'\x00*\x10\x01\x00\x13¢\[email protected]ý\x15ÿþ\x00\x00' 
>>> back 
'0013A200402D5DF9' 
+0

我試圖INT(STR(A){ - 16:]),錯誤發射'ValueError異常:無效字面對於int()與底座10 :' – user2386107

+0

因爲大括號,我在這裏得到一個'SyntaxError'。你確定你正確地複製了嗎? –

+0

我測試了他的問題,在字符串中加入了大約30個數字,但沒有注意到我實際上是從數字16中取出的。 –

0

我只想explot片在這裏通過其強制轉換爲字符串,以一個切片並將其轉換回數字。要做到這一點

b = int(str(a)[-16:]) 
+1

這會給你'904444333322221111'。 –

+0

我的不好, - 是非常強制性的 –

0

的一種方式是:

b = int(str(a)[len(str(a))/2:])