【问题标题】:c# reading/writing bytes to/from consolec# 从控制台读取/写入字节
【发布时间】:2012-08-19 18:39:49
【问题描述】:

我有一个byte[] 数组并想将其写入标准输出:Console.Out.Write(arr2str(arr))。如何将byte[] 转换为字符串,以便app.exe > arr.txt 执行预期的操作?我只想使用管道将数组保存到文件中,但是编码会搞砸。

稍后我想从标准输入读取该字节数组:app.exe < arr.txt 并得到相同的结果。

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

编辑:

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

【问题讨论】:

  • 原始字节不应保存到文本文件中。但是,> 适用于 Console.WriteLine
  • @ColeJohnson:想象一下我保存到 arr.bin,而不是 arr.txt :p

标签: c# console bytearray


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 有没有办法在不使用 Console.Write 的情况下完成我所描述的操作?您是否对此特定功能发表评论?
    • @user1367401 我已经用流 altertinitave 更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多