【问题标题】:How do I convert a string 2 bytes long to an integer in python如何在python中将2字节长的字符串转换为整数
【发布时间】:2009-05-05 18:28:44
【问题描述】:

我有一个我已经继承并正在尝试扩展的 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 程序员和我一直在谷歌上搜索并试图让它工作一整天。

请提出建议。

【问题讨论】:

  • 能否请您显示以下输出:“print pS”?我不清楚为什么 int(pS[0:3], 16) 不起作用。你没有“0x”前缀吗?

标签: python


【解决方案1】:

查看struct 模块。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      struct.unpack( "h", pS[0:2] )
      

      但是会是数组形式

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-27
          • 1970-01-01
          • 2018-05-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多