Python:从字符串中获取int值
问题描述:
这是一个愚蠢的问题,我不知道如何制定它,所以我将举一个例子。我Python:从字符串中获取int值
v = chr(0xae) + chr(0xae)
其中#AEAE,在十进制的44718.
我的问题的值是怎么得到的v
整数值?我知道ord()
,但我只能将它用于字符,而不是字符串。
谢谢。
答
我设法做到这一点使用的struct
模块:
import struct
int_no = struct.unpack('>H', v)[0]
print int_no
,其输出所期望的结果:
44718
答
我假设你想要将十六进制转换为整数而不是char字符串。
>>> int("AEAE",16)
44718
或
>>> int("0xAEAE",16)
44718
在回答您的意见,我能想到的一个方法是使用bitshifts:
>>> (ord('\xae') << 8) | (ord('\xae'))
44718
我不知道是否有一个更好的尽管如此。
答
它更容易保持十六进制作为一个字符串,并使用int()
:
int("AEAE", 16)
答
您可以任意字节长度的字符串转换的int
或long
使用这些表达式之一。
i = reduce(lambda x, y: (x<<8)+ord(y), v, 0)
i = reduce(lambda x, y: (x<<8)+ord(y), reversed(v), 0)
将其中的一个用于little-endian数据,另一个用于big-endian数据。或相反亦然。
答
好了,简单的方法是去:
def convert(v):
x = 0
for c in v:
x *= 256
x += ord(c)
return x
如果你想拥有最左面的字符有最大价值。
您可以预先取消v
以获得相反的端序性。
的问题是,我得到从远程服务器,其被表示为这个数据''\ xae \ xae'',所以这是我需要转换为'int()' – ov1d1u 2013-05-08 18:43:06