2016-04-17 9 views
0

これは私のtcpクライアント用のコードセクションです。この部分は、受け取ったバイトを文字に変換することです。しかし、私はそれにいくつかのロジックを配置し、私はこの出力を文字列に設定する必要がありますしたいと思います。それは個々のキャラクターを個別に印刷し続けるので、私はどのようにこれを行うのでしょうか?もう情報が必要な場合は、お気軽にお問い合わせください。C#この出力を文字列に設定するにはどうすればよいですか?

byte[] bb = new byte[100]; 
int k = stm.Read(bb, 0, 100); 

for (int i = 0; i < k; i++) 
    Console.Write(Convert.ToChar(bb[i])); 

ありがとうございます。あなたは、特定のエンコーディングのバイト配列を解読したい場合

+0

はじめに、どのようなエンコードを想定しますか? 'string text = Encoding.ASCII.GetString(bb、0、k)'を使用することはできますが、ASCIIでない場合はそうではありません。 –

+0

ImはASCIIを使用しています。 –

答えて

-1
string str = ""; 
foreach (byte b in bb) str += Convert.ToChar(b); 
Console.Write(str); 
+1

それはそれを行うにはひどく非効率的な方法です。 http://jonskeet.uk/csharp/stringbuilder.html –

+1

@JonSkeetを参照してください、それは恐ろしい方法かもしれません。しかし、それは私が必要としたことをしたようだった。ありがとうございましたJames –

+0

@JoshuaHodson:うまくいくかもしれませんが、悪い考えです。小さなテストでうまくいくことがわかっているかもしれないこのようなパフォーマンス上の問題については、後ではなく早くそれを見つけるほうが良いでしょう。しかし、より大きな状況では緩んでしまい、サーバは停止してしまいます。パフォーマンス以外にも、バイナリデータをテキスト、IMOに変換するのは慣用的な方法ではありません。 –

0

コメントを1として、ちょうどEncoding.GetStringを使用しています。たとえば、次のように

string text = Encoding.ASCII.GetString(bb, 0, k); 

(UTF-8は、通常、その時点でより良いオプションですテキストを任意の人間のテキストであることを意味する場合にASCIIはほとんど良い選択ではありませんますが、その後、あなたが心に留めする必要があります。 1つの文字が複数のバイトに分割される可能性があるため、Stream.Readへの複数の呼び出しがあります。

関連する問題