Python:从字符字符串中获取整数值

4

这是一个比较愚蠢的问题,我不知道该怎样清晰地表达它,因此我会给出一个例子:我拥有

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

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

我的问题是,如何获取整数值 v?我知道关于 ord() 的用法,但是只能用于一个字符,而不能用于字符串。

谢谢。

5个回答

3
我使用struct模块成功完成了这个任务:
import struct
int_no = struct.unpack('>H', v)[0]
print int_no

输出所需结果的方法是:
44718

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)

使用其中一个适用于小端数据,另一个适用于大端数据。或者反过来。


1

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

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

或者

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

作为对您评论的回复,我能想到的一种方法是使用位移操作:
>>> (ord('\xae') << 8) | (ord('\xae'))
44718

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


问题在于我从远程服务器获取的数据表示为 '\xae\xae',所以我需要将其转换为 int() - ov1d1u

1

嗯,直截了当的方法是:

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

如果您希望最左边的字符具有最大值,可以事先反转 v 以获得相反的字节序。

0

将十六进制保留为字符串并使用int()更容易:

int("AEAE", 16)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接