【发布时间】: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
提前致谢
【问题讨论】:
-
您会遇到的一个问题是
str(addr.to_bytes(3,'little'))并没有完全按照您的想法做。你可能想要addr.to_bytes(3,'little').decode()。 -
就实际问题而言,这已在 Stack Overflow 上被多次询问,例如 stackoverflow.com/questions/25348229/… 和 stackoverflow.com/questions/26568245/…。可能值得查看以前的答案。
-
谢谢,但是当我使用
addr.to_bytes(3,'little').decode()时,我得到了 J\x1e -
在您的示例中,
int(..., 16)毫无意义。 Python 已经知道0x402d4a是base-16,并隐式执行到int的转换。事实上,做你在那里所做的事情会引发TypeError
标签: python python-3.x pwntools