【问题标题】:Convert a byte to a negative integer?将字节转换为负整数?
【发布时间】:2022-01-16 15:09:55
【问题描述】:

我有一个字节 \ca 我想转换为 -54 而不是 202

是否有执行此操作的函数或者我必须在我的代码中进行此数学运算?

这是我的代码:

    def load_sv_str(self, byte_str):
        byte_data = self.unpack_byte_data(byte_str)
        self.my_char = byte_data[0]

self.my_char 在应该得到 -54 时却一直得到 202

【问题讨论】:

    标签: python arrays


    【解决方案1】:

    您可以使用int.from_bytes()。确保使用signed=True,因为它是一个签名字符:

    >>> int.from_bytes(b"\xca", "little", signed=True)
    -54
    

    【讨论】:

    • 嗯...我收到一个错误:TypeError: cannot convert 'int' object to bytes
    • 奇怪的是从字节数组索引的字节是int
    • 已修复。要获取单个字节,您必须使用切片 byte_data[0:1]
    • @RaySalemi 很高兴我能帮上忙 :-) 如果它解决了问题,您可以接受答案 :-)
    【解决方案2】:

    你可以像这样使用struct.unpack()

    >>> struct.unpack("b", b"\xca")[0]
    -54
    

    "b" 是有符号字节的格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 2018-01-18
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      相关资源
      最近更新 更多