Python 将0x20、0x00、0x0d、0x0a字节传递给strcmp()

Python 将0x20、0x00、0x0d、0x0a字节传递给strcmp(),python,string,null,strcmp,Python,String,Null,Strcmp,我想在有奇怪的strcmp的地方挑战一下。 具体如下: if(strcmp(argv[1],"\x00")) return 0; if(strcmp(argv[2],"\x20\x0a\x0d")) return 0; 我试图通过Python传递参数,但字节的读取方式不正确。 这就是我所尝试的: ./program $(python -c 'import sys;sys.stdout.write("\x00 \x20\x0a\x0d")') 我也试着使用他们的repr,但那也不起作用。当前正

我想在有奇怪的strcmp的地方挑战一下。 具体如下:

if(strcmp(argv[1],"\x00")) return 0;
if(strcmp(argv[2],"\x20\x0a\x0d")) return 0;
我试图通过Python传递参数,但字节的读取方式不正确。 这就是我所尝试的:

./program $(python -c 'import sys;sys.stdout.write("\x00 \x20\x0a\x0d")')

我也试着使用他们的
repr
,但那也不起作用。当前正在评估每个字节实际代表的内容:如何正确地“按原样传递它们?”

如果不希望对反斜杠转义进行评估,则需要对其进行转义

这:

与文本字符串
“\x20\x0a\x0d”
进行比较,该字符串有12个字符

从命令行的角度来看,第一个参数应该是空字符串(在大多数shell中通常写为
),第二个参数应该是Python表示法中的树字符串
“\n\r”

不确定Python与这里的事情有什么关系,例如,在bash中,您应该能够做到:

$ ./program "" $'\n\r'

我无法编辑质询代码,因此必须根据“\x20\x0a\x0d”进行评估
$ ./program "" $'\n\r'