【问题标题】:How to get the raw bytes from a hex string in python如何从python中的十六进制字符串中获取原始字节
【发布时间】:2021-03-16 15:15:12
【问题描述】:

我在python中有以下问题

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

我的代码如下

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

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

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

提前致谢

【问题讨论】:

标签: python python-3.x pwntools


【解决方案1】:

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

你应该做什么:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 2012-06-05
    • 2017-09-28
    • 2022-01-25
    • 2019-06-25
    相关资源
    最近更新 更多