1

私はbyte[]配列を持っていて、それを stdout: に書きたいと思っていますConsole.Out.Write(arr2str(arr))byte[]文字列に変換する方法app.exe > arr.txtは、期待どおりですか? パイプを使用して配列をファイルに保存したいだけですが、エンコーディングが混乱します。

後で stdin: からそのバイト配列を読み取りapp.exe < arr.txt、同じことを取得したいと思います。

これら 2 つのことを行うにはどうすればよいですか? 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を呼び出してバイト配列を文字列に変換する必要があります。base64 からバイト配列に戻すConvert.FromBase64Stringもあります。

于 2012-08-19T18:58:19.617 に答える