如何在Python中将一个2字节长的字符串转换为整数

5 投票
4 回答
11528 浏览
提问于 2025-04-15 11:24

我接手了一个Python程序,想要对它进行扩展。

我从中提取了一个两个字节长的字符串,叫做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
struct.unpack( "h", pS[0:2] )

但是它会以数组的形式出现。

struct.unpack( "h", pS[0:2] )[0] 这个代码可以直接获取值。

5

你可以使用 ord 函数把字符转换成它们的字符编码,然后以合适的方式把这些编码加在一起:

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

看看这个struct模块。

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

对于一个带符号的2字节值,使用"H"表示无符号值。

撰写回答