如何划分整数并占用一部分

时间:2013-05-15 14:53:45

标签: python

我有一个变量持有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

如何划分整数?

3 个答案:

答案 0 :(得分: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\x00@J\xfd\x15\xff\xfe\x00\x000013A200402D5DF9"
>>> half = len(a)//2
>>> front, back = a[:half], a[half:]
>>> front
'\x00*\x10\x01\x00\x13¢\x00@Jý\x15ÿþ\x00\x00'
>>> back
'0013A200402D5DF9'

答案 1 :(得分:0)

我只是通过将切片投射到一个字符串,然后将切片转换回一个数字来解释切片。

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

答案 2 :(得分:0)

一种方法是:

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