python - 将带空格的 Python 十六进制输出送入已编译的 C 文件

标签 python c hex ascii

使用 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 文件。

最佳答案

用引号将数据括起来

./compiled_c_here "$(test)"

关于python - 将带空格的 Python 十六进制输出送入已编译的 C 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366132/

相关文章:

c++ - 在 C++ 中将字符串拆分为 4 个字符

python - 在 Sun Grid Engine 中运行 Python MPI 程序

python - 使用python在不同的virtualenv中运行子进程

python - 创建一个包含上限所有子集的列表(但其中 lst[i] ≤ 上限[i])

python - 在机器学习中数据集不平衡的情况下,AUC 是否是比准确性更好的指标?如果不是,哪个是最好的指标?

c - 错误 : called object ‘0’ is not a function

c - 从邻接矩阵中删除顶点的好方法

c - 为什么 X509_CRL_verify() 失败了?

c++ - C/C++ 用十六进制初始化 double

java - 打印十六进制字符串的地址而不是十六进制字符串值