能否将非ASCII字符传递给argv参数?

3
假设您有一个接受命令行参数的二进制可执行文件。
./process in

在这种情况下,输入是:“i”= 0x69,“n”= 0x6E。
有没有办法传递特定的字节作为输入,而不是ASCII码?
也就是说,我想传递0xF9。
0xF9 = 11111001
请注意,我不知道任何可以在屏幕上键入并在二进制中评估为1111 1001的ASCII字符(因为ASCII仅限于0-127范围内)。
但遗憾的是,我希望这个可执行文件接收字节0xF9作为输入。
可执行文件是固定的;我没有它的源代码,也不能修改它。

由于程序参数是以空终止字符串形式表示的,因此您试图做什么尚不清楚。 - Weather Vane
一个字符串是字符数组。一个字符是一个字节。我想要有一个字符,且该字节为“1111 1001”(当然,在其后面加上一个空字符)。 - ineedahero
argv是指向字节数组的指针数组,而不是ASCII字符。您可以按任何方式解释这些字节。 - Hadi Brais
1
我不知道这是否有帮助,但在Windows控制台中,您可以通过按住Alt键并在数字键盘上键入其十进制值来输入字符值,例如在此情况下为“249”。 - Weather Vane
2
如果您使用Bash作为您的shell,那么$’\xF9’应该将字符(字节)传递给您的程序。唯一不能出现在参数中的字符(字节)是空字节。它严格地标志着参数的结束。 - Jonathan Leffler
显示剩余2条评论
1个回答

2
在MS-DOS时代,你可以使用键盘上的组合键ALT-249来输入0xF9 = 11111001 = 249
对于Windows系统,如这篇文章所述,此方法仍然有效。
对于Linux/Unix系统,你可以使用类似的方法,具体操作请参考这个回答

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接