Python pwntools';p32的功能很奇怪

Python pwntools';p32的功能很奇怪,python,pack,unpack,pwntools,Python,Pack,Unpack,Pwntools,我正在测试英特尔x86_64、Ubuntu 64位、Python3、Pwntools v4.3.1 $ python Python 3.7.4 (default, Aug 13 2019, 20:35:49) [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more informa

我正在测试英特尔x86_64、Ubuntu 64位、Python3、Pwntools v4.3.1

$ python
Python 3.7.4 (default, Aug 13 2019, 20:35:49) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pwn import *
>>> addr = 0xbffffb78
>>> print(p32(addr))
b'x\xfb\xff\xbf'
我认为,
0xbffffb78
的正确打包结果应该是
\x78\xfb\xff\xbf

但是为什么会发生
b'x\xfb\xff\xbf
? \x78在哪里


什么是正确的打包方式,而不是使用
p32()

这正是Python呈现的方式。如果字节可以呈现为ASCII字符,则显示为一个字节

>>> b"\x78"
b'x'
要查看呈现为十六进制的字节,可以使用bytes对象的:

>>> b'x\xfb\xff\xbf'.hex()
'78fbffbf'

这几乎是一个很好的问题。只是需要一些研究,我明白了。这只是印刷输出的问题吗?实际数据是否仍然保持为\x78?是的,这是正确的。@CPUU我在回答中添加了一些关于将字节显示为十六进制的信息。