PowerShell 的写输出、回显和输出重定向将过多的字符插入到输出中

ily*_*rov 5 windows powershell hex

故事

我正在编写一个程序,它像 doxxd -ps命令一样输出一系列十六进制数字。此输出旨在转换为二进制文件,例如带有xxd -ps -r. 当我尝试xxd -ps -r在 PowerShell 中调用我的十六进制输出时,我没有得到所需的二进制文件,xxd 的输出为空。

问题

经过一些调查,我发现 PowerShell 的写入输出,它是别名回显和输出重定向 '>' - 所有它们都会在输出中插入过多的字符,例如 '\00' 和其他一些字符。

问题

如何摆脱这种行为并使 Powershell 免于破坏命令之间的数据流?

考试

我希望 Powershell 表现得像旧的 cmd:

ps>java -cp HelloWorld > hello.txt
ps>xxd -ps hello.txt > hello.hex
ps>xxd -ps -r hello.hex
ps>HelloWorld

ps>
Run Code Online (Sandbox Code Playgroud)

当前最后一个命令的输出为空。

我可以

现在我将用java编写我自己的十六进制到二进制转换器,这对我的项目来说还可以,甚至更好,但我想我将来最终会偶然发现这个问题,所以我想做好准备。

Emi*_*ggi 3

我过去发现过类似的事情。如果数据是二进制的,则重定向会因换行符而产生损坏的输出。感谢这篇好文章,我已经解决了。