这是一个比较愚蠢的问题,我不知道该怎样清晰地表达它,因此我会给出一个例子:我拥有
v = chr(0xae) + chr(0xae)
其中 #AEAE 的十进制值为 44718。
我的问题是,如何获取整数值 v
?我知道关于 ord()
的用法,但是只能用于一个字符,而不能用于字符串。
谢谢。
struct
模块成功完成了这个任务:import struct
int_no = struct.unpack('>H', v)[0]
print int_no
44718
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)
使用其中一个适用于小端数据,另一个适用于大端数据。或者反过来。
我假设您想将十六进制转换为整数而不是字符字符串。
>>> int("AEAE",16)
44718
或者
>>> int("0xAEAE",16)
44718
>>> (ord('\xae') << 8) | (ord('\xae'))
44718
我不确定是否有更好的方法。
嗯,直截了当的方法是:
def convert(v):
x = 0
for c in v:
x *= 256
x += ord(c)
return x
v
以获得相反的字节序。将十六进制保留为字符串并使用int()
更容易:
int("AEAE", 16)
'\xae\xae'
,所以我需要将其转换为int()
。 - ov1d1u