Python:从char字符串中获取int值

时间:2013-05-08 18:37:17

标签: python char chr ord

这是一个愚蠢的问题,我真的不知道如何制定它,所以我举一个例子。我得到了

v = chr(0xae) + chr(0xae)

其中#AEAE是十进制的,值为44718。

我的问题是如何得到v的整数值?我知道ord(),但我只能将它用于char,而不能用于字符串。

谢谢。

5 个答案:

答案 0 :(得分:3)

我设法使用struct模块执行此操作:

import struct
int_no = struct.unpack('>H', v)[0]
print int_no

输出所需的结果:

44718

答案 1 :(得分:2)

您可以使用以下表达式之一将任意长度的字节字符串转换为intlong

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数据。反之亦然。

答案 2 :(得分:1)

我假设您要将十六进制转换为整数而不是char字符串。

>>> int("AEAE",16)
44718 

>>> int("0xAEAE",16)
44718

在回复你的评论时,我能想到的一种方法是使用bitshifts:

>>> (ord('\xae') << 8) | (ord('\xae'))
44718

我不确定是否有更好的方法。

答案 3 :(得分:1)

嗯,直截了当的方式是:

def convert(v):
    x = 0
    for c in v:
        x *= 256
        x += ord(c)
    return x

如果您想让最左边的字符具有最大值。

您可以事先撤消v以获得相反的字符串。

答案 4 :(得分:0)

将十六进制保持为字符串并使用int()

更容易
int("AEAE", 16)