5

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

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

例子:

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

4 回答 4

9

这是一份工作struct

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

或者有点棘手:

>>> int(s.encode('hex'), 16)
22874
于 2012-05-23T09:17:31.187 回答
4

我不认为有一个内置的方法可以做到这一点,但它很容易烹饪:

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

这通过base 16进行,当然可以优化。我将把它“作为练习”。

于 2012-05-23T09:13:55.963 回答
3

其他方式:

sum(ord(c) << i*8 for i, c in enumerate(mystr))
于 2012-05-23T09:17:18.417 回答
1
>>> reduce(lambda a,b: a*256+b, map(ord,'YZ'), 0)
22874
于 2012-05-23T09:16:48.200 回答