[英]How to pad an address with \x00 in python
我正在尝试将地址 0x004007ad 打印到终端以进行缓冲区溢出分配。 由于我的处理器,我必须以小端方式进行。 但是,当我尝试打印地址时, \\x00 不包括在内。 下面是我的python程序的代码:
hex_string = "\xad\x07\x40\x00"
print "\x01" * 28 + hex_string
如何打印它以便包含 \\x00 ?
通过在它们前面放置另一个反斜杠来逃避所有反斜杠......
hex_string = "\\xad\\x07\\x40\\x00"
print "\x01" * 28 + hex_string
这应该够了吧!
编辑:关于你的问题......
import re
hex_string = "\\xad\\x07\\x40\\x00"
other_string = 28*"\\x01"
hex_string = re.sub("\\\\", "", hex_string)
other_string = re.sub("\\\\", "", other_string)
print(other_string + hex_string)
不知道是不是我回答太晚了。
我的理解是你有一个原始地址的字符串缓冲区,你想按照人类约定将它转储到标准输出。
不幸的是,python 没有很好地处理十六进制格式。 一种方法是将原始值转换为正确的 Python int 并使用 %x 对其进行格式化,并在前面手动添加 0x。
示例代码如下
import struct
hex_string = "\xad\x07\x40\x00"
v, = struct.unpack('<I', hex_string)
print ('0x' + '%08x' % v)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.