web-dev-qa-db-ja.com

Byte [] to ASCII

バイナリ値で返されるテキストファイルの内容を受け取りました。

Byte[] buf = new Byte[size];
stream = File.InputStream;
stream.Read(buf, 0, size);

これをASCIIに変換するにはどうすればよいですか?

46
The Mask
88
Jalal Said

次を使用できます。

System.Text.Encoding.ASCII.GetString(buf);

ただし、必要な文字列ではなく、奇妙な数字が表示される場合があります。その場合、元の文字列には、表示時に16進文字が含まれている場合があります。その場合は、これを試してください。

System.Text.Encoding.UTF8.GetString(buf);

または最後の手段として:

System.Text.Encoding.Default.GetString(bytearray);
9
Encoding.ASCII.GetString(buf);
5
Mrchief

ストリームからバイト配列にデータを読み込む代わりに、フレームワークにすべてを処理させ、 StreamReader をASCII文字列を読み込むためのエンコーディング:この方法では、適切なバッファサイズや大きなデータサイズを取得することを心配する必要はありません。

using (var reader = new StreamReader(stream, Encoding.ASCII))
{
    string theString = reader.ReadToEnd();
    // do something with theString
}
4
Jeff Mercado

Encoding.GetStringメソッド(Byte []) バイトを文字列に変換します。

派生クラスでオーバーライドされると、指定されたバイト配列内のすべてのバイトを文字列にデコードします。

ネームスペース:System.Text
Assembly:mscorlib(mscorlib.dll内)

構文

public virtual string GetString(byte[] bytes)

パラメータ

bytes
    Type: System.Byte[]
    The byte array containing the sequence of bytes to decode.

戻り値

タイプ:System.String
指定されたバイトシーケンスのデコード結果を含む文字列。

例外

ArgumentException        - The byte array contains invalid Unicode code points.
ArgumentNullException    - bytes is null.
DecoderFallbackException - A fallback occurred (see Character Encoding in the .NET Framework for complete explanation) or DecoderFallback is set to DecoderExceptionFallback.

備考

変換するデータがシーケンシャルブロック(ストリームから読み取ったデータなど)でのみ使用できる場合、またはデータ量が非常に大きいために小さなブロックに分割する必要がある場合、アプリケーションは提供されているデコーダーまたはエンコーダーを使用する必要があります派生クラスのGetDecoderメソッドまたはGetEncoderメソッドによってそれぞれ。

デコードの手法と考慮事項の詳細については、Encoding.GetCharsの備考を参照してください。

1
BrunoLM