Python 阻止将 HEX 解码为 ASCII,同时从我的 Var 中删除反斜杠

标签 python

我想从变量中删除一些不需要的符号。在这种情况下,符号是反斜杠。我使用的是十六进制数字,作为示例,我将在下面显示一些简短的简单代码。但我不希望 python 将我的十六进制转换为 ASCII,我该如何防止这种情况发生。我有一些很长的 shell 代码供 asm 稍后使用,这些代码非常长,并且手动删除 \ 是一个漫长的过程。我知道有不同的方法,例如使用 echo -e "x\x\x\x" > output 等,但我的整个脚本将用 python 编写。 谢谢

>>> a = "\x31\xC0\x50\x68\x74\x76"
>>> b = a.strip("\\")
>>> print b
1�Phtv

>>> a = "\x31\x32\x33\x34\x35\x36"
>>> b = a.strip("\\")
>>> print b
123456

最后我希望它打印我的变量:

>>> print b
x31x32x33x34x35x36

最佳答案

变量中没有反斜杠:

>>> a = "\x31\xC0\x50\x68\x74\x76"
>>> print(a)
1ÀPhtv

以换行符为例:在 Python 中编写 "\n" 会得到只有一个字符的字符串——换行符——并且没有反斜杠。请参阅string literals docs了解这些的完整语法。

现在,如果您确实想用这样的反斜杠编写字符串,您可以使用 r 修饰符来实现:

>>> a = r"\x31\xC0\x50\x68\x74\x76"
>>> print(a)
\x31\xC0\x50\x68\x74\x76
>>> print(a.replace('\\', ''))
x31xC0x50x68x74x76

但是如果您想将常规字符串转换为十六进制编码的符号,您可以逐个字符地执行,将其转换为数字 ("\x31" == "1" --> 49),然后转换为十六进制("0x31"),最后去掉第一个字符:

>>> a = "\x31\xC0\x50\x68\x74\x76"
>>> print(''.join([hex(ord(x))[1:] for x in a]))
'x31xc0x50x68x74x76'

关于Python 阻止将 HEX 解码为 ASCII,同时从我的 Var 中删除反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55029857/

相关文章:

python - 模板语法错误 : 'settings_tags' is not a valid tag library

Python MySQL 与 Ruby MySQL

python - 使用正则表达式重新标记并删除字符串中的冗余项

python - 使用 NumPy 将向量保存到 Python 文件中

python - 如何使用 re.findall() 使用符号组名

python - 如何在 python PubSub 订阅者中捕获内部/库线程中发生的异常?

javascript - 在 Python 应用程序中使用 WebKitGtk+ 时,有没有办法从 JS 调用 Python 函数?

python - 模拟 subprocess.Popen 而不执行

python - 在 Python 中将字符串转换为带小数的整数

python - 如何从 YieldWatch 中抓取 "Net Worth"?