".bin"ファイルを完全に読み込み、ストリームを関数に渡す必要があります。私はBinaryReaderをバイトごとに値を読み取るためにうまくいきました。全ファイルを文字列ストリームとして関数に渡したいと思っています。 StreamReaderを使用するとガベージ情報が得られますが、StreamReaderは適切にビンファイルを読み取ることができません。C#でBinaryReaderをStreamに変換するにはどうすればよいですか?
ありがとうございます。
".bin"ファイルを完全に読み込み、ストリームを関数に渡す必要があります。私はBinaryReaderをバイトごとに値を読み取るためにうまくいきました。全ファイルを文字列ストリームとして関数に渡したいと思っています。 StreamReaderを使用するとガベージ情報が得られますが、StreamReaderは適切にビンファイルを読み取ることができません。C#でBinaryReaderをStreamに変換するにはどうすればよいですか?
ありがとうございます。
バイナリデータをstring
として渡さないでください。代わりに、Stream
から読まれた可能性のあるものから切り離されたbyte[]
を使用してください。 StreamReader
はテキストを読むためのものなので、BinaryReader
またはStream.Read()
methodを直接使用する必要があります。読み込み中のストリームがシークできる場合(CanSeek
プロパティを介して公開されている場合)、そのLength
が見つかり、ストリームからすべてのバイトを一度に読み取ることができます。
ストリームが非常に大きいか、シークをサポートしていない場合、メソッドが0
を返すまで、チャンクでそれを行うと、少し精巧にする必要があります。達成された)。
バイナリデータを読み取るのに相当するStreamReader.ReadToEnd()
はありませんが、拡張メソッドとして定義することはあまり難しくありません。
あなたがしたいことを明確にしてください。ストリームオブジェクトを関数またはファイルの内容に渡しますか?後者の場合は、ファイルの内容をバイトの配列として渡すか、各バイトが16進値で表される文字列として渡しますか? –
ファイルはおそらくUnicodeテキストではありません。あなたは読んでいるファイルを理解する必要があります。 – SLaks
ストリームをバイナリではなく、文字列に渡す必要があります。ここでは、私はreadlineなどがあります。 – Vikyboss