如何在 Python 中存储 Hex 并将 Hex 转换为 ASCII?

新手上路,请多包涵

我的命令输出类似于 0x53 0x48 0x41 0x53 0x48 0x49 。现在我需要将其存储在十六进制值中,然后将其转换为 ASCII 作为 SHASHI

我试过的-

  1. 我尝试将十六进制值存储为 int("0x31",16) 然后使用 decode("ascii") --- 将其解码为 ASCII,但没有运气。
  2. "0x31".decode("utf16") 这会引发错误 AttributeError: 'str' object has no attribute 'decode'

通过 Google 找到的其他一些随机编码和解码的东西。但仍然没有运气。

问题 :- 我怎样才能像 0x53 0x48 0x41 0x53 0x48 0x49 那样存储一个十六进制值并将它的值转换为 SHASHI 以进行验证。

注意:对 Python 不太友好,所以如果这是一个新手问题,请原谅。

原文由 TheMightyNight 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 918
2 个回答

int("0x31", 16) 部分是正确的:

 >>> int("0x31",16)
49

但是要将其转换为字符,您应该改用 chr(...) 函数

 >>> chr(49)
'1'

将它们放在一起(在第一个字母上):

 >>> chr(int("0x53", 16))
'S'

并处理整个列表:

 >>> [chr(int(i, 16)) for i in "0x53 0x48 0x41 0x53 0x48 0x49".split()]
['S', 'H', 'A', 'S', 'H', 'I']

最后把它变成一个字符串:

 >>> hex_string = "0x53 0x48 0x41 0x53 0x48 0x49"
>>> ''.join(chr(int(i, 16)) for i in hex_string.split())
'SHASHI'

我希望这有帮助!

原文由 filbranden 发布,翻译遵循 CC BY-SA 3.0 许可协议

>>> import binascii
>>> s = b'SHASHI'
>>> myWord = binascii.b2a_hex(s)
>>> myWord
b'534841534849'
>>> binascii.a2b_hex(myWord)
b'SHASHI'

>>> bytearray.fromhex("534841534849").decode()
'SHASHI'

原文由 papu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题