2013-04-12 2 views
8

私はバイト配列を持っています。各バイトの8ビットの値は、私の文字列の文字として欲しいものです。私の8ビット値は、ASCII、ANSI、UTF-8、ISO-8859-1、毎日の温度読み取り値、ライン上の点からの距離、またはあなたが望むものと考えることができます。それは無関係です。byte []をエンコーディングなしで文字列に変換する方法、データの損失なし

私が終わったとき。文字列のNの位置にあるcharは、Nと同じ値を持つ必要があります。つまり、上位8ビットは0で、下位8ビットはソースバイトと同じでなければなりません。

バイトを文字列に変更しないで単純にマッピングするエンコーディングは何ですか?

+0

これは何が必要なのか不思議です。その文字列はあまり有用ではありません。表示や印刷には使用できず、おそらく外部システムにはうまくいきません。なぜそれをバイトから変換するのですか? –

+0

@JoeEnosなぜ文字列を表示や印刷に使用できないのですか?バイト配列のデータに応じて、非常に良いかもしれません。 – phoog

+0

@JoeEnos、私がしたように質問を表現する目的は、「なぜあなたはこれをやっているの?」という束を避けようとすることでした。 「エンコーディングをバイパスする必要性は、ソリューションがちょうど間違っていることを示す赤い旗です」と答えています。質問は私の問題の煮詰めた形であるか、単純に、バイト配列を文字列に変換するにはどうすればよいのでしょうか?する。 :-) – Craig

答えて

14

この要件では、エンコーディングを省略します。なぜなら、エンコーディングの内容が分からず、バイトを自分自身に変換するだけなので、エンコードは不要です。

string Convert(byte[] data) 
{ 
    char[] characters = data.Select(b => (char)b).ToArray(); 
    return new string(characters); 
} 
+0

これは基本的に私がやっていたことですが、私の成功を隠していたどこかでエラーを作り出していました。 :-) – Craig

+1

他の方法はどうですか?このメソッドで作成した文字列をバイト配列に変換する方法は? – MaxOvrdrv

+0

多くのオプションがあります。 's.ToCharArray()。(c =>(byte)c).ToArray();'を選択します。ここでsは文字列です。この解決策は、元の質問を考えれば、すべての文字が0から255までの範囲内にあるという仮定に基づいていることに注意してください。他のコンテキストでは、テキストエンコーディングを使用する必要があります。 – phoog

2

あなたが聞いているエンコーディングは「ISO/IEC 8859-1」と呼ばれています。

関連する問題