将带有空格的Python十六进制输出传入编译的C Fi

2024-06-16 10:20:27 发布

您现在位置:Python中文网/ 问答频道 /正文

使用python脚本,我想打印出以下十六进制输出:

hex_values = \
"\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd" + \
"\x80\x5b\x5e\x52\x68\x02\x00\x1a\x0a\x6a\x10\x51\x50\x89" + \
"\x80\x43\xb0\x66\xcd\x80\x93\x59\x6a\x3f\x58\xcd\x80\x49" + \
"\x50\x53\x89\xe1\xb0\x0b\xcd\x80"

print hex_values。你知道吗

最终输出:

./test
1���SCSj���f̀[^Rh
jQP��C�f̀�Yj?X̀IPS���

这是意料之中的。但是,当我将这个输出输入到编译的C文件中时

./compiled_c_here $(test)

编译后的C文件将错误地抱怨实际上输入了太多的参数。这是因为python脚本输出的十六进制序列在ASCII字符之间有空格,这使得可执行文件认为这是2个输入,而不是一个长的十六进制字符串。你知道吗

注意:如果hex输出没有空格,编译的C文件将正常工作(但是,我相信我不能忽略空格,因为它们代表一些ASCII序列)。你知道吗

编译后的C文件对我来说基本上是一个黑盒,我希望能够保留十六进制输出,这样它的行为就如同接收到的ASCII字符表示初始十六进制值一样。你知道吗

打印初始python脚本中的十六进制值的好方法是什么,这样就可以将它们解释为单个十六进制字符串,而无需修改编译的C文件。你知道吗


Tags: 文件脚本asciivalues空格hexx02xcd