繁体   English   中英

如何在python中用\\x00填充地址

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM