使用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输入而不是一个长十六进制字符串。
注意:如果十六进制输出没有空格,编译的C文件将正常运行(但是,我相信我不能忽略这些空格,因为它们代表了一些ASCII序列)。
编译后的C文件对我来说基本上是一个黑盒子,我希望能够保留十六进制输出,使其行为与接收的ASCII字符表示初始十六进制值的方式相同。
从初始python脚本打印十六进制值的好方法是什么,这样可以将它们解释为单个十六进制字符串,而无需修改已编译的C文件。
答案 0 :(得分:3)
将数据括在引号
中./compiled_c_here "$(test)"