能否将非ascii字符传递给argv?

能否将非ascii字符传递给argv?,c,assembly,x86,intel,C,Assembly,X86,Intel,假设您有一个接受命令行参数的二进制可执行文件 ./process in 在本例中,输入为:“i”=0x69,“n”=0x6E 我是否可以传递特定字节作为输入,而不是ASCII 也就是说,我想通过0xF9 0xF9=11111 001 注意,没有ASCII字符(据我所知)可以在屏幕上键入,其二进制计算结果为11111001(因为ASCII限制在0-127的范围内) 但是,唉,我希望这个可执行文件接收字节0xF9作为输入 可执行文件是固定的;我没有它的源代码,也无法修改它。回到MS-DOS时代,您

假设您有一个接受命令行参数的二进制可执行文件

./process in
在本例中,输入为:“i”=0x69,“n”=0x6E

我是否可以传递特定字节作为输入,而不是ASCII

也就是说,我想通过0xF9

0xF9=11111 001

注意,没有ASCII字符(据我所知)可以在屏幕上键入,其二进制计算结果为11111001(因为ASCII限制在0-127的范围内)

但是,唉,我希望这个可执行文件接收字节0xF9作为输入


可执行文件是固定的;我没有它的源代码,也无法修改它。

回到MS-DOS时代,您可以用键盘上键入的组合键ALT-249输入
0xF9=11111 001=249

对于Windows,这仍然可以像中所解释的那样工作


对于Linux/Unix,您可以使用中介绍的密钥组合使用类似的方法。

由于程序参数是以nul结尾的字符串,因此不清楚您要做什么。字符串是字符数组。字符是字节。我希望有一个字符,那个字节是“11111001”。argv是指向字节数组的指针数组,而不是ASCII字符。您可以随意解释这些字节。我不知道这是否有帮助,但在Windows控制台中,您可以通过按住Alt键并在键盘上键入其十进制值来输入字符值。在本例中为
249
。如果使用Bash作为shell,则
$'\xF9'
应将字符(字节)传递给您的程序。参数中唯一不能出现的字符(字节)是空字节。这完全标志着争论的结束。