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

我怎样才能除整数?

4

3 回答 3

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'
于 2013-05-15T14:54:59.760 回答
0

我只是在这里通过将切片转换为字符串来展开切片,取切片并将其转换回数字。

b = int(str(a)[-16:])
于 2013-05-15T14:57:20.650 回答
0

一种方法是:

b = int(str(a)[len(str(a))/2:])
于 2013-05-15T14:59:23.867 回答