1

我在python中有以下问题

我有十六进制的值 0x402de4a 并想将其转换为字节,所以我使用 .to_bytes(3, 'little')b'J\2d@'如果我打印它会给我。我知道这只是字节的表示,但我需要稍后为输出转换一个字符串,J\2d@如果我使用 str() nut 我需要它是\x4a\x2d\x40如何将字节对象转换为字符串所以我可以将原始二进制数据作为字符串获取

我的代码如下

addr = 0x402d4a
addr = int(addr,16)

addr = str(addr.to_bytes(3,'little'))
print(addr)

我的预期输出是 \x4a\x2d\x40

提前致谢

4

1 回答 1

0

没有直接的方法可以\x4a\x2d从字符串中获取等等。或字节,就此而言。

你应该做什么:

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

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

rslt = "".join(
    f"\\x{b:02x}" for b in value_as_bytes
)
于 2020-12-04T15:06:52.950 回答