【问题标题】:Why is 5D in hex represented as bytearray(b']')?为什么十六进制的 5D 表示为 bytearray(b']')?
【发布时间】:2022-01-09 02:38:59
【问题描述】:

例如,如果你在一个字节数组中表示 5D,你会得到bytearray(b']'),但我不明白为什么。

是不是因为 ASCII,如果是,Python 是如何处理所有 ASCII 字符的?

【问题讨论】:

  • 5D hex 是 93 十进制,这是 ] 的 ascii 代码。这就是 bytearray 显示易于打印的字符的方式。
  • python2 还是 python3?结果不一样。
  • 在每个中尝试b']' == chr(0x5d)
  • 这是因为 x5d 是 ASCII 中的 ] 字符,Python 在显示字节数组的内容时经常会做一件烦人的事情,如果你想要所有十六进制,请使用类似 ','.join(f'\\x{b:02x}' for b in ba) 的东西。

标签: python python-3.x byte ascii


【解决方案1】:

在底层都是二进制的,对吧?

十六进制的5d 只是二进制的01011101。事实证明,ascii 中的 ] 在二进制 01011101 中是相同的。所以实际上你只有 01011101 或 base10 中的 93 以 Hex 和 Ascii 表示。

【讨论】:

  • 所以 Python 只是在使用 Ascii 来节省打印时的内存?
  • 与内存无关,因为一个字节就是一个字节。它只是使用 ascii 作为字节的表示。它也可以只使用十六进制(或二进制或十进制或 base29),但无论出于何种原因,他们决定使用 ascii。我相信您可以使用 bytearray 的.hex() 方法将其显示为十六进制,如果您愿意的话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 2010-09-19
  • 2019-08-12
  • 2011-07-16
  • 1970-01-01
相关资源
最近更新 更多