c#从控制台读取/写入字节

时间:2012-08-19 18:39:50

标签: c# console bytearray

我有一个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)从数组转换为字符串,但与<>一起使用时,这不起作用。通过“不起作用”我的意思是通过管道写入和读取不会返回相同的东西。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

要使用二进制文件,您希望Console.OpenStandardInput()检索您可以读取的Stream。这已在SO的其他主题中介绍过,例如:Read binary data from Console.In