如何将字符串转换为Base-10表示?

时间:2012-05-23 09:09:51

标签: python string base-conversion

是否有任何python模块可以帮助我将字符串转换为64位整数? (这个字符串的最大长度是8个字符,所以它应该适合长)。

我想避免编写自己的方法。

示例:

Input String   Hex          result (Base-10 Integer)
'Y'            59           89
'YZ'           59 5a        22874
...

4 个答案:

答案 0 :(得分:7)

这是struct的工作:

>>> s = 'YZ'
>>> struct.unpack('>Q', '\x00' * (8 - len(s)) + s)
(22874,)

或者有点棘手:

>>> int(s.encode('hex'), 16)
22874

答案 1 :(得分:4)

我认为没有一种内置方法可以做到这一点,但它很容易做饭:

>>> int("".join([hex(ord(x))[2:] for x in "YZ"]), 16)
22874

这通过基座16进行,当然可以优化基座16。我会把它作为一种练习。

答案 2 :(得分:3)

另一种方式:

sum(ord(c) << i*8 for i, c in enumerate(mystr))

答案 3 :(得分:1)

>>> reduce(lambda a,b: a*256+b, map(ord,'YZ'), 0)
22874