1

我有一个byte[]数组,想把它写到 stdout: Console.Out.Write(arr2str(arr))。如何转换byte[]为字符串,从而app.exe > arr.txt达到预期效果?我只想使用管道将数组保存到文件中,但是编码会搞砸。

我稍后想从 stdin: 读取那个字节数组app.exe < arr.txt并得到同样的东西。

我该如何做这两件事:向/从 stdin/stdout 写入和读取字节数组?

编辑:

我正在阅读string s = Console.In.ReadToEnd(),然后System.Text.Encoding.Default.GetBytes(s)。我正在使用 将数组转换为字符串,但这在与,System.Text.Encoding.Default.GetString(bytes)一起使用时不起作用。“不起作用”我的意思是通过管道写入和读取不会返回相同的东西。<>

4

2 回答 2

4

如果您正在写入 Console.WriteLine,则需要将文本编码为可打印格式。如果要作为二进制文件输出到文件,则不能使用 Console.WriteLine

如果您仍需要输出到控制台,您需要使用Console.OpenStandardOutput()打开原始流或调用Convert.ToBase64String将字节数组转换为字符串。还有Convert.FromBase64String从 base64 返回到字节数组。

于 2012-08-19T18:58:19.617 回答
4

要处理二进制文件,您希望 Console.OpenStandardInput() 检索可以从中读取的 Stream。这已在 SO 的其他线程中进行了介绍,例如:Read binary data from Console.In

于 2012-08-19T19:02:58.827 回答