如何在python中从十六进制字符串中获取原始字节



我在python 中遇到以下问题

我有十六进制的值0x402de4a,我想把它转换成字节,所以我使用.to_bytes(3,'little'(,如果我打印它,它会给我b'J2d@'。我知道这只是字节的一种表示,但我需要稍后为输出转换一个字符串,如果我使用str((,它会给我J2d@。我需要它是x4ax2dx40。我如何将字节对象转换为字符串,以便我可以获得作为字符串的原始二进制数据

我的代码如下

addr = 0x402d4a
addr = int(addr,16)
addr = str(addr.to_bytes(3,'little'))
print(addr)

我的预期输出是x4ax2dx40

提前感谢

没有直接的方法可以从字符串中获取x4ax2d等。或者字节。

你应该做什么:

  1. 将int转换为字节--您已经做到了,很好
  2. 循环字节,使用f-string打印带有"\x"前缀的十六进制值
  3. join()他们

2&3可以很好地折叠成一个生成器理解,例如:

rslt = "".join(
f"\x{b:02x}" for b in value_as_bytes
)

最新更新