是否有任何python模块可以帮助我将字符串转换为64位整数? (这个字符串的最大长度是8个字符,所以它应该很长)。如何将字符串转换为其Base-10表示形式?
我想避免写我自己的方法。
例子:
Input String Hex result (Base-10 Integer)
'Y' 59 89
'YZ' 59 5a 22874
...
是否有任何python模块可以帮助我将字符串转换为64位整数? (这个字符串的最大长度是8个字符,所以它应该很长)。如何将字符串转换为其Base-10表示形式?
我想避免写我自己的方法。
例子:
Input String Hex result (Base-10 Integer)
'Y' 59 89
'YZ' 59 5a 22874
...
这是struct
工作:
>>> s = 'YZ'
>>> struct.unpack('>Q', '\x00' * (8 - len(s)) + s)
(22874,)
还是有一点麻烦:
>>> int(s.encode('hex'), 16)
22874
我不认为有一个内置的方法来做到这一点,但它是很容易煮了:
>>> int("".join([hex(ord(x))[2:] for x in "YZ"]), 16)
22874
这通过基座16进入其能当然会被优化出来。我会留下这个“作为一个练习”。
看看 '十六进制' 编码:) –
>>> reduce(lambda a,b: a*256+b, map(ord,'YZ'), 0)
22874
另一种方式:
sum(ord(c) << i*8 for i, c in enumerate(mystr))
+1伟大的解决方案! – jamylak
'int(s.encode('hex'),16)', 完美,谢谢@罗曼 –
太棒了!有没有简单的方法来执行相反的转换,即从整数22874获得字符串'YZ'? –