【问题标题】:How to convert bytes byte by byte to signed int如何将字节逐字节转换为有符号整数
【发布时间】:2023-01-29 22:40:16
【问题描述】:

我有一个 bytes 元素。我的字长是 1,一个字节。内容可以是b'\xff\xff\x01',意思是[-1, -1, 1]

我想将它从字节形式转换为 int 表示形式。 从逻辑上讲,我的尝试是:

ints = [int.from_bytes(j, byteorder='little', signed=True) for j in b'\xff\xff\x01']

类型错误:无法将“int”对象转换为字节

但是,这不起作用,因为 for j in bytes() 将 bytes 元素直接转换为 int j。然而,这是一个未签名的转换,我需要签名。如何将我的字节逐字节转换为带符号的整数。

【问题讨论】:

  • “然而,这是一个未签名的转换,我需要签名。”您是否尝试过计算以转换为 2s 补码?
  • @quamrana 这样做真的回答问题?
  • ints = [int.from_bytes(bytes([j]), byteorder='little', signed=True) for j in b'\xff\xff\x01']
  • @realSamy 随时发布您的答案,我会接受它,因为它比我想出的 hack 更好
  • “真的没用,需要这样一个 hacky 解决方案来保持正确的类型信息”——Python 3.x 正确识别(除了一些看起来非常愚蠢的遗留方法,如 zfill)字节是不是文字. Python 没有单独的“字符”类型,因此索引一个字符串以给出另一个字符串是有意义的。字节是原始数据;一个单独的字节确实有一个自然表示作为相应的数值——在 Python 中拼写为 int。直观地,索引到“一维”序列应该给出一个标量值。 3.x 修复了这个问题。

标签: python python-3.x signed


【解决方案1】:
【解决方案2】:
【解决方案3】:
【解决方案4】:
猜你喜欢
  • 2023-04-01
  • 2012-10-30
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-07
  • 2013-06-18
  • 1970-01-01
相关资源
最近更新 更多