如何将字符串2字节长转换为python中的整数

时间:2009-05-05 18:28:44

标签: python

我有一个我继承的python程序,并且正在尝试扩展。

我已经将一个2字节长的字符串提取到一个名为pS的字符串中。

pS第一个字节是0x01,第二个是0x20,十进制值== 288

我一直试图将其值作为整数,我使用了

形式的行
x = int(pS[0:2], 16)  # this was fat fingered a while back and read [0:3]

并获取消息

ValueError: invalid literal for int() with base 16: '\x01 '

另一位C程序员和我一直在谷歌搜索并试图让它整天都在工作。

建议,请。

4 个答案:

答案 0 :(得分:20)

查看struct模块。

struct.unpack( "h", pS[0:2] )

对于带符号的2字节值。使用“H”表示无符号。

答案 1 :(得分:4)

您可以使用ord将字符转换为字符代码,然后以适当的方式将它们添加到一起:

x = 256*ord(pS[0]) + ord(pS[1])

答案 2 :(得分:0)

struct.unpack( "h", pS[0:2] )

但它会是数组形式

struct.unpack( "h", pS[0:2] )[0] 这将直接获得价值

答案 3 :(得分:0)

这是一个大端的两字节数字。如果您不想使用 struct 模块,也可以使用 int。如果输入是 str 类型,您需要先使用 bytes 将其转换为 bytes(pS, 'utf-8') 实例。

num = int.from_bytes(pS, 'big')