我有一个我继承的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程序员和我一直在谷歌搜索并试图让它整天都在工作。
建议,请。
答案 0 :(得分:20)
答案 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')